如何使用Java配置与Azure托管的MySQL的SSL连接?

时间:2016-07-21 15:58:21

标签: java mysql azure ssl

在Azure上,我找到了4个证书:

ClearDB CA Certificate
Client Certificate
Client Private Key
Client Certificate Bundle(for Windows only)

我已经使用ClearDB CA创建了trustStore,就像在这里被告知的那样 How to connect to a remote MySQL database via SSL using Play Framework?

keytool -import -alias mysqlServerCACert -file cleardb.pem -keystore truststore.jks

设置如下的系统属性:

System.setProperty("javax.net.ssl.trustStore", "path/truststore.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "password");

为jdbc url添加了参数

?useSSL=true&requireSSL=true&verifyServerCertificate=true

但我仍然得到例外

  

javax.net.ssl.SSLHandshakeException:   sun.security.validator.ValidatorException:PKIX路径构建失败:   sun.security.provider.certpath.SunCertPathBuilderException:无法   找到所请求目标的有效证书路径

我真的很困惑。我应该使用哪种证书。其他证书是什么? 将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:0)

@OlegKuts,根据ClearDB FAQ关于强制执行客户端SSL(或x.509)身份验证,我认为如果它来自ClearDB,我应该使用ClearDB CA证书。

  

我的ClearDB群集需要额外的安全选项。如何实施客户端SSL(或x.509)身份验证?

     

我们运营自己的CA,我们很乐意为您的帐户生成x.509用户身份验证证书。请send us a support request(需要登录)获取x.509证书。

同时,根据ClearDB的帮助&支持page(其Java链接不可用,但请参阅后面的MySQL 5.5链接),您需要按照MySQL连接器文档5.5 Connecting Securely Using SSL再试一次。