gpt4 book ai didi

java - 为 MySQL 命令行客户端加密连接生成 SSL key

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:54 25 4
gpt4 key购买 nike

我已经在云中使用 MySQL 启动了一个项目,我需要为 MySQL 命令行客户端设置一个 SSL 连接。

我从 MySQL 服务器收到了 ca.pem 文件,里面有大量的证书。

在尝试了一定数量的不同方法之后,我已经在 MySQL Workbench 和 Java 中解决了 SSL 连接问题。我现在在我的 Java 安装的 cacerts 信任存储中拥有所有证书,并且我已经配置 Java 和 Workbench 以在我的 client.jks 存储中找到我的公共(public)/私有(private) SSL key 。

虽然这些都对命令行 MySQL 客户端没有帮助。根据 MySQL 文档 Configuring MySQL to use Secure Connections ,这是启动它的方式:

mysql --ssl-ca=ca.pem \
--ssl-cert=client-cert.pem \
--ssl-key=client-key.pem

这些参数可以放在my.cnf中,让命令行更简单。

这告诉了我一些我需要知道的事情:MySQL on Amazon RDS即如何将命令行上的 mysql 指向服务器证书。这很容易,考虑到 Java 过程需要我使用命令行工具将所有证书导入 Java 证书存储区,该工具仅读取第一个证书并默默地忽略其余部分。

所以在对 Java 很感兴趣,并且从一开始就有一个用于 ssh 的公钥/私钥对之后,我想到将我所有的 key 放在一起是明智的,事实上什至重新-使用相同的 key 创建我需要的其他格式。

根据 Converting a Java Keystore into PEM Format我应该能够做到这一点,或者我应该改用 SSH key ?他们都共享相同的国家/州/地区/组织/单位/姓名/电子邮件。

MySQL 文档 Creating SSL Certificates and Keys Using OpenSSL说我需要这样做:

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

这是有问题的,因为我没有生成 AWS 证书,而且我只从那里获得了一个 pem 文件。也许 AWS ca.pem 和 server-cert.pem 都在一个 pem 文件中——我想我可以检查一下,但我必须去挖掘关于他们使用哪个 CA 签名机构的信息,这样我才能识别 CA 证书.我想“服务器证书”是我所拥有的实际主机的公钥。

但它不起作用,我收到以下错误:

$ openssl.exe x509 -req -in client-req.pem -days 3600 
-CA rds-combined-ca-bundle.pem -CAkey rds-combined-ca-bundle.pem
-set_serial 01 -out client-cert.pem
Signature ok
subject=/C=UK/ST=LN/L=LN/O=X/OU=XYZ/CN=xyz/emailAddress=adam@me.com
Getting CA Private Key
unable to load CA Private Key
4294956672:error:0906D06C:PEM routines:PEM_read_bio:no start
line:pem_lib.c:707:Expecting: ANY PRIVATE KEY

最佳答案

事实证明,SSL 证书是一个转移注意力的问题。你不需要它们。您只需要:

mysql -h myinstance.c9akciq32.rds-us-east-1.amazonaws.com
--ssl-ca=[full path]rds-combined-ca-bundle.pem --ssl-verify-server-cert

Cygwin 和标准的 Windows MySQL 客户端不能很好地协同工作,因此在尝试启动时挂起:connecting to mysql from cygwin

关于java - 为 MySQL 命令行客户端加密连接生成 SSL key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44075243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com