如何使用MariaDB Connector / J建立到MySQL的SSL连接?

时间:2016-05-23 14:42:30

标签: java mysql security ssl mariadb

我正在使用启用了SSL的MySQL 5.7.10,并根据these instructions生成证书。我的Java 7应用程序使用MariaDB Connector/J并在JDBC URL中启用了SSL:

jdbc:mysql://dbservername:3306/dbname?useSSL=true&trustServerCertificate=false

但连接失败了:

Caused by: java.lang.RuntimeException: Could not generate DH keypair
...
Caused by: java.security.InvalidAlgorithmParameterException: Prime size must be multiple of
64, and can only range from 512 to 1024 (inclusive)

根据this blog post,问题可以通过以下方式解决:

  1. 升级到Java 8(或更高版本)。
  2. 降级到MySQL 5.7.5(或更低版本)。
  3. 不包括Diffie-Hellman(DH)密码。
  4. (1)不是我正在进行的项目的选项。 (2)似乎是限制性的,会阻止访问未来的MySQL改进。 (3)似乎最有希望的:我已经证实它确实可以与MySQL connector/J一起使用但不幸的是它的GPL许可证使我无法在我的项目中使用它。

    MariaDB Connector / J是否具有与enabledSSLCipherSuites等效的属性,还是有其他方法可以阻止它在连接时使用DH密码?

1 个答案:

答案 0 :(得分:1)

现已在MariaDB Connector / J版本1.5.0-RC中实现了所请求的功能选项:

  

enabledSslProtocolSuites 强制TLS / SSL协议到特定的一组   TLS版本(以逗号分隔的列表)。示例:" TLSv1,TLSv1.1,   TLSv1.2工作"默认值:TLSv1,TLSv1.1。从1.5.0开始

     

enabledSslCipherSuites 强制TLS / SSL密码(以逗号分隔的列表)。   示例:" TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,   TLS_DHE_DSS_WITH_AES_256_GCM_SHA384"默认值:使用JRE密码。以来   1.5.0

(请参阅问题下方的评论,release notesthis Jira ticket。)