我从以下位置设置 SSL:http://dev.mysql.com/doc/refman/5.0/en/creating-ssl-files-using-openssl.html
数据库服务器显示 SSL 已启用。在网络服务器上,我可以这样做:
mysql -h xx.xx.xxx.xxx --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -uMyUser -p
假设我在包含 SSL 证书的目录中,它工作正常。如果我移出目录,我会得到:
ERROR 2026 (HY000): SSL connection error: SSL_CTX_set_default_verify_paths failed
现在在 PHP 中,我有:
<?php
if(file_exists('/ssl/client-key.pem')) echo 'wtf';
if(file_exists('/ssl/client-cert.pem')) echo 'wtf';
if(file_exists('/ssl/ca.pem')) echo 'wtf';
function newPDO($host, $user, $password, $database) {
$ssl = array(
PDO::MYSQL_ATTR_SSL_KEY =>'/ssl/client-key.pem',
PDO::MYSQL_ATTR_SSL_CERT=>'/ssl/client-cert.pem',
PDO::MYSQL_ATTR_SSL_CA =>'/ssl/ca.pem'
);
try {
$dbl = new PDO("mysql:host=$host;dbname=$database", $user, $password, $ssl);
$dbl->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo $e->getMessage();
}
return $dbl;
}
$dbl = newPDO('xx.xx.xxx.xxx', 'user', 'pass' ,'database');
?>
OUTPUT: wtfwtfwtfSQLSTATE[HY000] [2026] SSL connection error: SSL_CTX_set_default_verify_paths failed
这与我在 SSH 中路径错误时遇到的错误相同。我在 PHP 中验证了路径,输出显示这些文件存在。我正在使用 PHP 5.4.16。
想法?
最佳答案
sudo yum remove php-mysql
sudo yum install php-mysqlnd
sudo reboot
关于php - SSL_CTX_set_default_verify_paths 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30793598/