我正在尝试使用以下代码建立到MySQL服务器的SSL连接(在Debian GNU / Linux 7(wheezy)上使用PHP 5.4.4):
$db = new PDO('mysql:host=mysql.myorganization.net;dbname=myDB',
'username', 'password', array(
PDO::MYSQL_ATTR_SSL_CA => 'mysqlCertificates/caChain.pem'
));
var_dump($db->query("SHOW STATUS LIKE 'Ssl_cipher';")->fetchAll());
但是我收到了这个错误:
SQLSTATE[HY000] [2026] SSL connection error: ASN: bad other signature confirmation
我可以使用mysql命令成功建立SSL连接:
mysql -u username -p -h mysql.myorganizataion.net --ssl-ca mysqlCertificates/caChain.pem
我还从源代码构建了PHP 5.4.4并且(没有运行make install)我运行了
sapi/cli/php ~/Projects/test.php
我得到以下输出
array(1) {
[0]=>
array(4) {
["Variable_name"]=>
string(10) "Ssl_cipher"
[0]=>
string(10) "Ssl_cipher"
["Value"]=>
string(18) "DHE-RSA-AES256-SHA"
[1]=>
string(18) "DHE-RSA-AES256-SHA"
}
}
我试着在php.ini文件和my.cnf文件中寻找任何东西,看看是否有什么东西可能会扰乱连接,但我不确定我在寻找什么。
所以我的问题是:
当从/ usr / bin / php运行php时会出现什么错误,但是当它从构建文件夹中的sapi / cli / php运行时会出现?
我意识到我的PHP已经过时但我无法更新它直到我们的下一个维护窗口,我觉得到目前为止我所做的事情表明它不是版本问题。
答案 0 :(得分:2)
在您的示例中,您没有使用证书的PDO连接字符串中的完整路径:
PDO::MYSQL_ATTR_SSL_CA => 'mysqlCertificates/caChain.pem'
您可以尝试完整路径,如下所示
PDO::MYSQL_ATTR_SSL_CA => '/fullpath/to/mysqlCertificates/caChain.pem'