【发布时间】:2015-12-12 01:58:05
【问题描述】:
我正在测试通过 SSL 连接到 MySQL 服务器。我可以使用 CLI mysql 客户端通过 SSL 毫无问题地连接。但是,当尝试通过 PHP 连接时(使用相同的用户名/主机名/密码/证书),我收到以下错误消息:
PHP 警告:PDO::__construct():SSL 操作失败,代码为 1。
OpenSSL 错误消息:
错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:第 7 行 /home/username/mysql.php 中的证书验证失败
PHP 警告:PDO::__construct():无法在第 7 行的 /home/username/mysql.php 中使用 SSL 连接到 MySQL
PHP 警告:PDO::__construct(): [2002](尝试通过 tcp://db.server.net:3306 连接)在第 7 行的 /home/username/mysql.php
PHP 致命错误:在 /home/username/mysql.php:7 中未捕获异常 'PDOException' 并带有消息 'SQLSTATE[HY000] [2002]'
但是,证书不应该是无效的,因为使用它们通过命令行客户端进行连接是有效的,对吧? PHP/openssl 中是否有某些事情可能导致此问题?
这是我用于测试的脚本(连接信息被屏蔽),我在 Google/其他地方找到的所有内容都告诉我这应该可以工作:
<?php
$db = new PDO("mysql:dbname=database_name;host=db.server.net", "user_name", "some_password", [
PDO::MYSQL_ATTR_SSL_CERT => "/etc/pki/tls/mysql/remote_client-cert.pem",
PDO::MYSQL_ATTR_SSL_KEY => "/etc/pki/tls/mysql/remote_client-key.pem",
PDO::MYSQL_ATTR_SSL_CA => "/etc/pki/tls/mysql/remote_ca-cert.pem",
]);
【问题讨论】: