2014-09-30 58 views
1

如果我运行此代码需要SSL,它将无法工作(访问拒绝用户),但没有SSL它的工作原理。PDO不适用于SSL

服务器端可能会发生什么情况来阻止它?显然不是密码/用户配置和另一个连接到服务器与SSL工作正常,所以我知道服务器正在接受加密连接。

有关我已有的信息已检出Connect to remote MySQL server with SSL from PHP

$dbE = new PDO(
    'mysql:dbname=DB;host=IP', 
    USER, 
    PASS, 
    array(
     PDO::MYSQL_ATTR_SSL_KEY => 'D:\ssl\mysql\client-key.pem', 
     PDO::MYSQL_ATTR_SSL_CERT => 'D:\ssl\mysql\client-cert.pem', 
     PDO::MYSQL_ATTR_SSL_CA => 'D:\ssl\mysql\ca-cert.pem' 
    ) 
); 
+0

你使用什么PHP版本? – Daan 2014-09-30 13:21:43

+0

我目前在5.3.8上,但在升级到最新的WAMP服务器的过程中,看看是否改善了事情。不幸的是,\ \并没有特别的帮助,但会看到升级是否有效。 – Ukuser32 2014-09-30 13:53:40

回答

0

调查了很多后,重建证书和头扑我想通了(PTL)。问题是(而且我也没有真正找到这个地方),但客户端证书必须从服务器复制到客户端。在PDO配置中使用的路径是到CA/cert/key的CLIENTS副本的路径,而不是服务器上的路径。我没有赞赏这一点,我认为它需要更清楚。

即使在http://dev.mysql.com/doc/refman/5.0/en/creating-ssl-certs.html上的示例意味着客户端密钥驻留在服务器上,而不是客户端。我希望这是有帮助的。