【问题标题】:PHP: PDO(MySQL) SSL ConnectionPHP: PDO(MySQL) SSL 连接
【发布时间】:2015-04-14 18:01:45
【问题描述】:

我正在尝试使用以下代码建立与 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 而从 build 文件夹中的 sapi/cli/php 运行 php 时,可能导致此错误出现的原因是什么?

我意识到我的 PHP 已经过时了,但我无法更新它,直到我们的下一个维护窗口,我觉得到目前为止我所做的证明这不是版本问题。

【问题讨论】:

  • 你解决过这个问题吗?我正在努力解决几乎相同的问题。
  • 我没有。这台服务器仍然有这个问题,由于我无法重建它,我只好将我们的代码放在另一台服务器上。

标签: php mysql ssl pdo


【解决方案1】:

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

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

您可以尝试如下所示的完整路径

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

【讨论】:

  • 相对路径和完整路径的结果相同。
猜你喜欢
  • 2012-03-13
  • 2017-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 2014-04-13
相关资源
最近更新 更多