我正在從SymmetricDS(SDS)2.5.13升級到3.1.5。 我配置了TLS/HTTPS並按預期在SDS 2.5.13下工作。然而,使用完全相同的證書,密鑰庫/信任庫文件,並同JDK,我得到SDS 3.1.5下以下錯誤在服務包裝日誌(wrapper.log):握手失敗/無共同密碼套件 - SymmetricDS 3.1.5
SEND TLSv1 ALERT: fatal, description = handshake_failure
WRITE: TLSv1 Alert, length = 2
called closeSocket()
handling exception: javax.net.ssl.SSLHandshakeException: no cipher suites in common
我有一個兩個節點配置,一個配置爲註冊服務器(父節點)。該子節點被配置爲推拉變化。我正在使用Sun(Oracle)JDK 7 update 5和適當的JCE Unlimited Strength Jurisdiction策略文件(以獲得對256位密碼的訪問權限)。
我在Server 2008下將獨立配置中的SDS作爲Windows服務運行.Windows防火牆當前處於關閉狀態。
wrapper.java.additional.6=-Dsym.keystore.file=c:/java-keystore/bfvm01-w2ka.ks
wrapper.java.additional.7=-Djavax.net.ssl.keyStore=c:/java-keystore/bfvm01-w2ka.ks
wrapper.java.additional.8=-Djavax.net.ssl.trustStore=c:/java-keystore/bfvm01-w2ka.ks
wrapper.java.additional.9=-Djavax.net.ssl.keyStorePassword=letmein
wrapper.java.additional.10=-Djavax.net.ssl.trustStorePassword=letmein
wrapper.java.additional.11=-Dsun.net.client.defaultReadTimeout=1800000
wrapper.java.additional.12=-Dsun.net.client.defaultConnectTimeout=1800000
wrapper.java.additional.13=-Djavax.net.debug=ssl,handshake
注:
我通過sym_service.conf文件通過下列TLS相關的Java參數的服務包裝由於這裏是標準的做法Java應用程序,我們使用相同的Java密鑰庫文件的密鑰庫和委託書。
這是服務包裝器是如何配置的啓動SDS:
wrapper.app.parameter.1=org.jumpmind.symmetric.SymmetricLauncher
wrapper.app.parameter.2=--secure-server
wrapper.app.parameter.3=--secure-port
wrapper.app.parameter.4=25684
wrapper.app.parameter.5=--properties
wrapper.app.parameter.6=../conf/symmetric.properties
在sym_node中的條目和symmetric.properties被正確配置爲使用HTTPS(而不是HTTP)。
子SDS節點,從而啓動與父報告通信此錯誤:
WRITE: TLSv1 Handshake, length = 198
READ: TLSv1 Alert, length = 2
RECV TLSv1 ALERT: fatal, handshake_failure
called closeSocket()
handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
的此錯誤父節點報告:
SEND TLSv1 ALERT: fatal, description = handshake_failure
WRITE: TLSv1 Alert, length = 2
called closeSocket()
handling exception: javax.net.ssl.SSLHandshakeException: no cipher suites in common
正如前面所提到的,相同的配置(服務器,證書,keystore/trustore文件,JDK)在SDS 2.5.13下可以很好地實現TLS/HTTPS安全性。唯一的增量是轉換到SDS 3.1.5。如果我在SDS 3.1.5中禁用TLS/HTTPS配置並使用HTTP,則父節點和子節點可以相互通信。
作爲一個絕望的健全性檢查,我編寫了一個快速的「Hello World」客戶端服務器應用程序,在我的子節點機器上創建一個SSLSocket並將一行文本發送到服務器節點機器(使用相同的TCP端口我一直在使用SDS)。使用相同的JDK和相同的密鑰庫/信任庫文件編譯並運行程序。像冠軍一樣工作。
我完全難住了。任何幫助,將不勝感激。