我使用啓用了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,問題可能被解決
- 升級到Java 8(或更高版本)。
- 降級到MySQL 5.7.5(或更低版本)。
- 不包括Diffie-Hellman(DH)密碼。
(1)不是我正在進行的項目的一個選項。 (2)似乎是限制性的,會阻止訪問未來的MySQL改進。 (3)似乎是最有希望的:我已驗證它可以與MySQL connector/J一起使用,但不幸的是,它的GPL許可證使我無法在我的項目中使用它。
MariaDB Connector/J是否具有與enabledSSLCipherSuites
相同的屬性,或者有什麼其他方法可以防止連接時使用DH密碼?
而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
謝謝 - 非常好地指出!猜猜這是指向更新開源代碼的選項,以包括... –
...或提交錯誤報告並等待MariaDB團隊這樣做! – eggyal