最近升级到PHP 5.6后,我遇到了与MysqL安全连接的一些问题.这涉及MysqLi以及PDO.
这是我的设置:
库MysqLi:
$db->ssl_set('/etc/MysqL/certs/client-key.pem', '/etc/MysqL/certs/client-cert.pem', '/etc/MysqL/certs/ca-cert.pem', NULL, NULL);
PDO:
array(
PDO::MysqL_ATTR_SSL_KEY => '/path/to/client-key.pem',
PDO::MysqL_ATTR_SSL_CERT => '/path/to/client-cert.pem',
PDO::MysqL_ATTR_SSL_CA => '/path/to/ca-cert.pem'
)
首先,我得到错误“dh键太小”.
其次,我收到错误“证书验证失败”.
我正在使用根据此tutorial使用openssl生成的自签名证书.
解决方法:
做了一些研究后,我找到了问题的答案:
1.错误“dh键太小”
由于logjam,DH密钥大小现在必须大于768位,而MysqL的默认大小是512位. (注意:这将在MySQL 5.7中修复).您必须在连接中提供适当的密码,例如: CAMELLIA128-SHA.
$db->ssl_set('/etc/MysqL/certs/client-key.pem', '/etc/MysqL/certs/client-cert.pem', '/etc/MysqL/certs/ca-cert.pem', NULL, 'CAMELLIA128-SHA');
PDO:
array(
PDO::MysqL_ATTR_SSL_KEY => '/path/to/client-key.pem',
PDO::MysqL_ATTR_SSL_CERT => '/path/to/client-cert.pem',
PDO::MysqL_ATTR_SSL_CA => '/path/to/ca-cert.pem',
PDO::MysqL_ATTR_SSL_CIPHER => 'CAMELLIA128-SHA'
)
2.错误“证书验证失败”
CA: hostname
Server: FQDN, e.g. hostname.example.com
Client: somename
重要的部分是服务器证书,其中公共名称必须与您要连接的主机相同,例如, hostname.example.com.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。