mysql --ssl-verify-server-cert=true 正在返回 "SSL certificate validation failure"

mysql --ssl-verify-server-cert=true is returning "SSL certificate validation failure"

通过尝试在 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 验证命令正在返回:

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,使用不同的通用名称作为 ca.pem 的 Node1,client-[= 的 Node2 36=],服务器节点 3-cert.pem

在启动期间将参数加载到 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

我猜测使用由受信任的第三方验证的正确证书我不应该出现此错误,但我需要验证它是否适用于自签名证书。

我 运行 不知道如何让它工作。有人遇到过类似的问题吗?

在我的例子中(对于自签名证书)解决方案是:

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

我的错误是遵循了 Mysql doc 的说明,其中引用 "To generate test files, you can press Enter to all prompts" 似乎不正确 我不得不将服务器的 CN-cert.pem 设置为mysqlserverhostname 来解决这个问题。