【发布时间】:2017-12-18 20:13:43
【问题描述】:
Mysql 服务器正在运行 php5.3。新的网络服务器正在运行 php7.1(从 php5.3 迁移而来)。当我尝试使用 ssl 连接 Mysql 服务器时,它不起作用。
try {
$dbh = new PDO($dsn, $user, $password, array(PDO::MYSQL_ATTR_SSL_KEY => '/etc/mysql/client-key.pem',
PDO::MYSQL_ATTR_SSL_CERT => '/etc/mysql/client-cert.pem',
PDO::MYSQL_ATTR_SSL_CA => '/etc/mysql/ca-cert.pem')
);
echo "Connestion established";
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
连接失败:SQLSTATE[HY000] [2002]
PDO::__construct(): SSL 操作失败,代码为 1。OpenSSL 错误消息: 错误:1416F086:SSL 例程:tls_process_server_certificate:证书验证失败
但是,当我从连接中删除 SSL 块时,它工作正常。我不知道发生了什么事。可能是服务器和客户端的版本不匹配。因为我使用的是旧的公钥和私钥。
是不是因为mysql客户端和服务器版本不匹配?
PS:我只升级了webserver中的php7。
【问题讨论】:
-
php 的错误报告中的任何内容?并且在配置中安装和启用 SSL 后证书仍然有效吗?
-
@Fred-ii-
php没有任何内容,因为我正在使用 try-catch。我从未更改过证书。只需从旧网络服务器复制粘贴到新网络服务器即可。 -
@Fred-ii- :旧的网络服务器正在运行 apache2 和新的 nginx。 nginx在哪里开启mysql-ssl?
-
对nginx不熟悉
-
@Fred-ii-:谢谢。你能再看看吗?我已经更准确地更新了错误消息。