我可以使用openssl s_client检索MySQL的CA证书吗?

时间:2016-03-04 20:30:50

标签: mysql macos ssl openssl

我可以使用openssl s_client检索MySQL的CA证书吗?

我可以使用以下

访问远程数据库服务器
mysql -u theuser -h thehost --ssl --ssl-cipher=DHE-RSA-AES256-SHA -p thedatabase

现在我想使用JDBC连接到它。

我意识到我需要insert the public certificate into my Java key store。但是,我无法弄清楚如何检索公共证书。我意识到它位于/etc/mysql/ca.pem或类似地方的远程服务器上。但是,我无权将该文件甚至ssh读入机器。

我试过

openssl s_client -cipher DHE-RSA-AES256-SHA  -connect thehost:3306

和一些变化。我总是得到错误。例如

CONNECTED(00000003)
30495:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:/BuildRoot/
Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-59/src/ssl/s23_clnt.c:618:

1 个答案:

答案 0 :(得分:0)

  

我可以使用openssl s_client检索MySQL的CA证书吗?

你可能不能。

配置良好的服务器将发送服务器证书和构建根CA路径所需的所有中间证书。您必须已拥有根CA证书。

例如:

$ openssl s_client -connect www.cryptopp.com:443 -tls1 -servername www.cryptopp.com
CONNECTED(00000003)
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify error:num=20:unable to get local issuer certificate
---
Certificate chain
 0 s:/OU=Domain Control Validated/OU=COMODO SSL Unified Communications
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
 1 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
 2 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
   i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
---
...

服务器发送了服务器的证书。它在上面显示为 0 s:/OU=Domain Control Validated/OU=COMODO SSL Unified Communications S 表示主题,而 I 表示发行人。< / p>

服务器在 1 2 中发送了两个中间证书。但是,我们需要在本地拥有证书2的颁发者来构建验证路径。证书2的颁发者通过公共名称 &#34; AddTrust外部CA根&#34;

&#34; AddTrust外部CA根&#34;可以从Comodo的网站{​​{3}}

下载

服务器发送了根CA,然后一个坏人可以篡改链,客户端也不会更明智。他们可以交换他们自己的CA并使用邪恶的链。

我们可以通过提取根CA来清除 verify error:num=20:unable to get local issuer certificate ,然后使用 -CAfile

$ openssl s_client -connect www.cryptopp.com:443 -tls1 -servername www.cryptopp.com \
  -CAfile addtrustexternalcaroot.pem

这会产生 Verify Ok (0)