MySQL PHP MySQL over SSL. Peer certificate did not match错误

MySQL PHP MySQL over SSL. Peer certificate did not match错误

阅读更多:MySQL 教程

背景

最近在开发一个基于PHP和MySQL的Web应用时,需要对MySQL连接加上SSL加密。尝试按照MySQL官方文档的方法进行配置后,发现在连接时出现了”Peer certificate did not match”的错误。

错误原因

“Peer certificate did not match”表示数据库认证时,SSL的证书与实际使用的证书不匹配。常见的错误原因有以下几种:

  1. 证书链不完整或顺序不正确: SSL证书是一系列证书链的组合,如果证书链不完整或顺序不正确,会导致认证失败。

  2. 证书过期或未生效: SSL证书有有效期限制,如果证书过期或未生效,会导致认证失败。

  3. 证书不匹配: SSL证书必须与服务器的域名或IP地址匹配,否则会导致认证失败。

解决方法

针对以上问题,可以采取以下解决方法:

  1. 检查证书链:可以使用openssl工具检查SSL证书链。以下是一个示例:
   openssl verify -CAfile /path/to/cabundle.crt /path/to/public.cert

其中,/path/to/cabundle.crt是SSL证书链文件,/path/to/public.cert是服务器的公钥证书。如果输出 “OK”,则证书链是正确的。

  1. 检查证书是否过期:可以使用openssl工具检查SSL证书是否过期。以下是一个示例:
   openssl x509 -enddate -noout -in /path/to/public.cert

其中,/path/to/public.cert是服务器的公钥证书。如果输出的enddate字段早于当前日期,则证书已过期。

  1. 检查证书是否匹配:可以将MySQL服务器的域名或IP地址添加到SSL证书中,确保与证书匹配。可以使用OpenSSL工具生成这样的证书。以下是一个示例:
   openssl req -new -key server.key -out server.csr
   openssl x509 -req -in server.csr -CA rootCA.crt -CAkey rootCA.key -out server.crt -days 3650 -CAcreateserial

其中,server.key是服务器的私钥文件,rootCA.crt和rootCA.key是根证书文件。这个示例命令将生成一个有效期为10年的SSL证书server.crt,并将其与服务器的私钥文件server.key配对使用。

总结

在使用MySQL over SSL时,要确保SSL证书链完整,证书未过期,与服务器的域名或IP地址匹配。如果出现”Peer certificate did not match”错误,则可以使用openssl工具检查证书链、证书是否过期、证书是否匹配,并根据检查结果采取相应的措施进行修复。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程