【发布时间】:2015-04-30 21:27:09
【问题描述】:
我们刚刚从 php 5.4 升级到 php 5.6,一切正常,我们的 MySQL 使用 MySQLi 和 SSL 连接。
我们的连接如下所示:
mysqli_real_connect($db, $host, $username, $password, $database, $port, $socket, MYSQLI_CLIENT_SSL);
mysqli_set_charset($db, "utf8");
但是,现在当我们尝试使用 php 5.6 通过 SSL 连接到 MySQL 时,我们得到:
警告:mysqli_real_connect():SSL 操作失败,代码为 1。 OpenSSL 错误消息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败 /MySQLConnection.php 第 29 行
警告:mysqli_real_connect():无法使用 SSL 连接到 MySQL 在 /MySQLConnection.php 第 29 行
警告:mysqli_real_connect(): [2002](试图通过 tcp://mysql1.ourdomain.com:3306) 在 /MySQLConnection.php 第 29 行
警告:mysqli_real_connect(): (HY000/2002): in /MySQLConnection.php 第 29 行
我试过设置:
mysqli_options($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, false);
但这无济于事。
更新
我补充说:
$mysql_certs_path = "/full/path/to/certs/mysql";
mysqli_ssl_set($db, $mysql_certs_path . "/client-key.pem", $mysql_certs_path . "/client-cert.pem", $mysql_certs_path . "/ca-cert.pem", null, null);
并且仍然得到:
警告:mysqli_real_connect():SSL 操作失败,代码为 1。 OpenSSL 错误消息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败 /MySQLConnection.php 第 31 行
Warning: mysqli_real_connect(): Cannot connect to MySQL by using SSL in /MySQLConnection.php on line 31
【问题讨论】:
-
修复服务器证书?
-
请张贴服务器的证书。使用
openssl x509 -in <file> -inform <PEM|DER> -text -noout。此外,您需要提供您连接的确切方式(主机名、IP 地址等)。 -
请发布您用于连接服务器的确切 URL,并发布
openssl s_client -connect <hostname>:<port> -tls1 -servername <hostname> | openssl x509 -text -noout的输出。通过单击编辑将其添加到您的问题中(不要将其作为评论发布)。否则,没有足够的信息来帮助解决问题。
标签: php ssl mysqli openssl mysqlnd