我们刚刚从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:第 29 行 /MySQLConnection.php 中的证书验证失败
警告:mysqli_real_connect():无法在第 29 行的 /MySQLConnection.php 中使用 SSL 连接到 MySQL
警告:mysqli_real_connect(): [2002](尝试通过 tcp://mysql1.ourdomain.com:3306 连接)在第 29 行的 /MySQLConnection.php
警告:mysqli_real_connect(): (HY000/2002): in /MySQLConnection.php on line 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:第 31 行 /MySQLConnection.php 中的证书验证失败
Warning: mysqli_real_connect(): Cannot connect to MySQL by using SSL in /MySQLConnection.php on line 31