mysql --ssl-verify-server-cert = true返回“SSL证书验证失败”

时间:2017-10-30 19:59:44

标签: mysql ssl https ssl-certificate

通过尝试在RHEL6上设置基于SSL的Mysql我在任何时候都要求mysql客户端验证自签名证书时遇到错误:

mysql --ssl-ca=/tmp/newcerts/ca.pem \
 --ssl-cert=/tmp/newcerts/client-cert.pem \
 --ssl-key=/tmp/newcerts/client-key.pem \
 -h IP.IP.IP.IP -u USER -p \
 --ssl-verify-server-cert=true

ERROR 2026 (HY000): SSL connection error: SSL certificate validation failure

在我设置的情况下 - ssl-verify-server-cert = false mysql不验证自签名证书并启动安全连接。

我已经使用Mysql HowTo文章创建了我的自签名证书:https://dev.mysql.com/doc/refman/5.6/en/creating-ssl-files-using-openssl.html并且openssl verify命令正在返回:

openssl verify -CAfile ca.pem server-cert.pem client-cert.pem

server-cert.pem: OK
client-cert.pem: OK

ca.pem& client-cert.pem& server-cert.pem创建时使用不同的公共名称作为节点1作为ca.pem,Node2作为client-cert.pem,Node3作为server-cert.pem

Param在启动时加载到Mysql中:

ssl-ca=/tmp/newcerts/ca.pem
ssl-cert=/tmp/newcerts/server-cert.pem
ssl-key=/tmp/newcerts/server-key.pem

然后我按照RHEL6的以下步骤将ca.pem添加到服务器:

update-ca-trust force-enable
cp /tmp/newcerts/ca.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

我猜测一个受信任的第三方验证的正确证书我不应该有这个错误,但我需要验证它是否可以使用自签名证书。

我没有想法让这个工作。有人已经遇到过类似的问题吗?

1 个答案:

答案 0 :(得分:0)

就我而言(对于自签名证书),解决方案是:

  • 无需将ca.pem添加到受信任的根证书
  • 需要将server-cert.pem的CN设置为mysqlserverhostname
  • 确保从客户端解析mysqlserverhostname
  • -h IP.IP.IP.IP -u USER -p替换为-h mysqlserverhostname -u USER -p

我的错误是遵循Mysql doc说明,其中引用“生成测试文件,您可以按Enter键进入所有提示”似乎不正确我必须设置服务器证书的CN。 pem作为mysqlserverhostname 来解决问题。