我正在尝试建立从 MySQL 数据库命令行客户端到 AWS 上的 MySQL 数据库实例的加密连接。
AWS 提供了一个证书包,其中似乎包含其所有服务器的所有证书。
MySQL 文档使用 OpenSSL 创建 SSL 证书和密钥说我需要这样做:
(1)创建CA证书
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca.pem
(2)创建服务器证书,删除密码,并签名。
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.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
(3)创建客户端证书,删除密码,并签名。
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.pem \
-CAkey ca-key.pem -set_serial 01 -out client-cert.pem
openssl verify -CAfile ca.pem server-cert.pem client-cert.pem
我已经ca.pem
从 AWS 获得了 (rds-combined-ca-bundle.pem)。
所以我必须跳过步骤(1)和(2)。
ca-key.pem
我是否有AWS 捆绑包中的服务器公钥?
如果是的话,我该如何使用它来完成步骤(3)?
这AWS 文档 - ‘MySQL DB 实例的 SSL 支持’特别稀疏,只是说:
mysql -h myinstance.c9akciq32.rds-us-east-1.amazonaws.com
-u my-user -p
--ssl-ca=rds-combined-ca-bundle.pem --ssl-verify-server-cert
它应该提示我输入密码,但却挂起了。
更新
我已经为 MySQL Workbench 和 Java JDBC 连接池设置并运行连接,并且 telnet 健全性测试显示 MySQL 服务器可以访问。
答案1
您不需要自己生成任何 SSL 证书,只需按照文档所述使用提供的rds-combined-ca-bundle.pem
参数mysql
即可。
答案2
毕竟这与证书无关。经过一番绝望的搜索,我找到了答案:从 Cygwin 连接到 MySQL
Cygwin 和 Windows MySQL 客户端不能愉快地协同运行。