【发布时间】:2010-09-07 10:25:20
【问题描述】:
我已经在一个网络上的一台服务器上成功设置了启用 SSL 的 MySQL 安装,并且可以使用 SSL 和 Linux 命令行 mysql 客户端在不同网络上的不同服务器上连接到它,但是每次我尝试连接时(使用 PHP 5.3.3)我不断得到:
警告:mysqli_real_connect(): (HY000/2026): SSL connection error in /var/www/html/test.php on line 18
我的PHP如下我做错了吗?证书为 777(仅在测试时),相同的代码适用于不同用户的未加密连接(已注释掉 SSL 设置,即mysqli 绝对可以普遍连接到数据库)
<?php
error_reporting(E_ALL);
ini_set("display_errors", "1");
$obj = mysqli_init();
mysqli_options($obj, MYSQLI_OPT_CONNECT_TIMEOUT, 5);
mysqli_ssl_set($obj,
'/mysql-ssl-certs/server-key.pem',
'/mysql-ssl-certs/server-cert.pem',
'/mysql-ssl-certs/ca-cert.pem',
NULL,
NULL);
$link = mysqli_real_connect($obj, 'localhost', 'ssluser', 'some_password', 'test');
if (!$link)
{
die('<br /><br />Connect Error (' . mysqli_connect_errno() . ') '.mysqli_connect_error());
}
echo 'Success... ' . mysqli_get_host_info($obj) . "\n";
$obj->close();
?>
【问题讨论】:
-
注意:这表示 localhost,因为我现在也在本地机器上尝试它,所以我 100% 确定这不是防火墙问题 - 我在那里遇到同样的错误......
-
不 - 我知道它们在一个奇怪的位置,但 / 中有一个有效的文件夹,它被 chmodded 为 777 以进行测试
-
MySQL 服务器的错误日志中是否有相关内容?如果可能,使用 --log-warnings=2(或 3 或 99,大于 1)启动 MySQL 服务器,请参阅dev.mysql.com/doc/refman/5.0/en/communication-errors.html
-
顺便说一句:您使用哪个版本的 MySQL?也许有关您的系统的其他一些说明?例如。操作系统版本,这些证书是如何创建的……不知道这是否相关,但可能是……