为MySQL生成SSL证书和密钥
MySQL支持SSL通信,不过需要自行生成所需要的证书和密钥。
生成过程中请根据提示提供相应的信息。如果证书只是用来测试,一路回车即可;如果在实际环境中使用,尽量提供有意义的信息。如果某个信息要留空,可以输入英文句号(.)。请自行保存生成过程中所输入的证书密码。
1、准备工作
创建干净的环境:
rm -rf newcerts mkdir newcerts && cd newcerts
2、生成CA证书
需要注意,CA证书的Comman Name不能与服务器请求文件和客户端的请求文件的Comman Name相同,否则证书验证阶段会报类似“error 18 at 0 depth lookup:self signed certificate”的错误。命令如下:
openssl genrsa 2048 > cakey.pem openssl req -new -x509 -nodes -days 3600 -key cakey.pem -out cacert.pem
3、生成服务器证书
生成服务器证书,移除密码,并对其签名。server-cert.pem是公钥,server-key.pem是私钥。
openssl req -newkey rsa:2048 -days 3600 -nodes -keyout server-key.pem -out server-req.pem openssl rsa -in server-key.pem -out server-key.pem openssl x509 -req -in server-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
4、生成客户端证书
生成客户端证书,移除密码,并对其签名。client-cert.pem是公钥,client-key.pem是私钥。
openssl req -newkey rsa:2048 -days 3600 -nodes -keyout client-key.pem -out client-req.pem openssl rsa -in client-key.pem -out client-key.pem openssl x509 -req -in client-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
5、验证证书文件
openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem server-cert.pem: OK client-cert.pem: OK
6、补充说明
用到的文件有cacert.pem、client-cert.pem、client-key.pem、server-cert.pem、server-key.pem。其中cacert.pem服务器客户端都需要;以server打头的用于服务器,以client打头的用于客户端。
关于密钥文件的权限设置,暂时没找到合适的答案。由于用户mysql必须对这些文件具有读权限,在这个前提下,尽量使文件权限最小是比较合适的选择。
转载自菜包子博客 原文链接:http://caibaoz.com/blog/2013/08/13/generate_ssl_certificates_and_keys_for_mysql/
本站声明:网站内容来源于网络,如有侵权,请联系我们https://www.qiquanji.com,我们将及时处理。
微信扫码关注
更新实时通知