繁体   English   中英

PHP:PDO(MySQL)SSL连接

[英]PHP: PDO(MySQL) SSL Connection

我正在尝试使用以下代码建立到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已经过时但我无法更新它直到我们的下一个维护窗口,我觉得我到目前为止所做的事情表明它不是版本问题。

在您的示例中,您没有在证书的PDO连接字符串中使用完整路径:

PDO::MYSQL_ATTR_SSL_CA => 'mysqlCertificates/caChain.pem'

你可以试试下面的完整路径吗?

PDO::MYSQL_ATTR_SSL_CA => '/fullpath/to/mysqlCertificates/caChain.pem'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM