2013-02-22 56 views

回答

0

您可以創建一個自定義com.mysql.jdbc.SocketFactory類,該類使用來自此SSLContextSSLSocketFactory創建SSLSocket s。然後,您可以使用socketFactory屬性將該類名傳遞給MySQL JDBC連接器(請參閱documentation中的表)。

這需要一個沒有參數的構造函數,但其​​Socket connect(String host, Properties props)方法應該通過參數props(如果需要)獲取JDBC屬性。

請注意,您不僅應該檢查證書的有效性,還應檢查主機名是否匹配。如果您使用的是Java 7,這可以這樣進行返回剛纔創建的SSLSocket前:爲HTTPS

SSLParameters sslParams = new SSLParameters(); 
sslParams.setEndpointIdentificationAlgorithm("HTTPS"); 
sslSocket.setSSLParameters(sslParams); 

(主機名匹配規則應該是大多數協議,包括MySQL足夠明智。 )

+0

它似乎會取代StandardSocketFactory [1],所以你會失去所有有關超時,keepalive和buffersize的功能,不是嗎? [1] http://www.docjar.com/html/api/com/mysql/jdbc/StandardSocketFactory.java.html – Adrien 2014-03-11 23:00:13