2016-05-23 88 views
1

我使用啓用了SSL的MySQL 5.7.10,並根據these instructions生成證書。我的Java 7的應用程序使用MariaDB Connector/J和SSL在JDBC URL啓用:如何使用MariaDB Connector/J建立與MySQL的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)密碼。

(1)不是我正在進行的項目的一個選項。 (2)似乎是限制性的,會阻止訪問未來的MySQL改進。 (3)似乎是最有希望的:我已驗證它可以與MySQL connector/J一起使用,但不幸的是,它的GPL許可證使我無法在我的項目中使用它。

MariaDB Connector/J是否具有與enabledSSLCipherSuites相同的屬性,或者有什麼其他方法可以防止連接時使用DH密碼?

+1

而MySQL的連接器/ J調用['javax.net.ssl.SSLSocket.setEnabledCipherSuites(字符串[]套房)'](https://docs.oracle.com/javase/7/docs/api/javax/net/ssl/SSLSocket.html#setEnabledCipherSuites(java.lang.String []))in [com.mysql.jdbc .ExportControlled.transformSocketToSSLSocket(MysqlIO mysqlIO)](https://github.com/mysql/mysql-connector-j/blob/release/5.1/src/com/mysql/jdbc/ExportControlled.java#L146),可悲的是MariaDB連接器/ J [不](https://github.com/MariaDB/mariadb-connector-j/blob/master/src/main/java/org/mariadb/jdbc/internal/protocol/AbstractConnectProtocol.java#L43 1-L437)。 – eggyal

+0

謝謝 - 非常好地指出!猜猜這是指向更新開源代碼的選項,以包括... –

+1

...或提交錯誤報告並等待MariaDB團隊這樣做! – eggyal

回答

1

請求的功能選項現已在MariaDB的連接器來實​​現/ 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