2015-01-16 115 views
3

我想在Spring-Boot 1.2.1上的Tomcat上啓用TLS 1.2。由於SSL握手失敗,Android 5.0無法連接到默認的SSL設置。 Android 4.4,iOS,Firefox和Chrome全部連接到默認版本。我認爲這是因爲Android 5.0支持的TLS協議與spring boot默認值(TLS v1?)不匹配。如何在Spring啓動時啓用TLS 1.2?

我想象我想改變這個設置的application.properties:

server.ssl.protocol=TLS 

,但我還沒有位於其他可接受的字符串(或者,如果有的話,偶)。通過在spring boot github上搜索「協議」,我找不到任何枚舉。 我試過「TLSv1.2」,但這似乎沒有效果。

目前的SSL配置在application.properties是:

server.ssl.key-store = chainedcertificates.p12 
server.ssl.key-store-password = secret 
server.ssl.key-store-type = PKCS12 

如何在春天開機啓用TLS 1.2?

如果有關係,我使用Java 1.7。這個文件似乎表明它應該支持TLS 1.2。

Tomcat 8 seems to have support present.我不確定如何檢查彈簧啓動時確切運行哪個版本。

+1

引導將server.ssl.protocol設置傳遞給Tomcat(https://github.com/spring-projects/sp ring-boot/blob/master/spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactory.java#L266),因此它是Tomcat,而不是Boot,它決定了可接受的值。 AFAIK,'TLSv1.2'是你需要的價值。 –

回答

6

默認情況下在spring-boot 1.2.1中啓用TLS 1.2。這可以通過運行命令行

openssl s_client -connect serverAddress:port 

其輸出

SSL-Session: 
Protocol : TLSv1.2 
Cipher : ECDHE-RSA-AES256-SHA384 

所以我的問題,必須有一些獨立的下面進行驗證。

+0

我們遇到了一個類似的問題,其中一個android客戶端無法連接我們的spring boot 1.4.1啓用的服務器,該服務器由嵌入式tomcat和ssl供電。 我們未能確定根本原因,但我們懷疑它與您提到的ssl協議不匹配。 你能解決這個問題,並可以分享你的路徑? Thnx – baraka

+0

@baraka我的問題的根源是Android實施中的一個錯誤。見http://stackoverflow.com/questions/28011581/websocket-ssl-handshake-failure。這個bug是由Tyrus引用websocket觸發的,但不是像AndroidAsync或nv-websocket這樣的其他實現。不確定這是否與您的特定情況相關。 – mattm

+0

我遇到同樣的問題......你是否設法解決這個問題? – mor222

2

由於彈簧引導包含默認密碼,您可能會遇到SSL握手錯誤。建議您定義一組密碼。我們遇到了類似的問題,我們修復此問題的方式是在調用方上使用SSLScan,然後掃描我們的系統以查看是否有任何匹配。這導致我們發現沒有匹配,並幫助我們定義一個我們應該支持的密碼列表。

使用SSLScan這些都是默認的密碼春天開機時會使用:

Preferred TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve P-256 DHE 256 
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256  Curve P-256 DHE 256 
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA   Curve P-256 DHE 256 
Accepted TLSv1.2 128 bits DHE-RSA-AES128-GCM-SHA256  DHE 1024 bits 
Accepted TLSv1.2 128 bits DHE-RSA-AES128-SHA256   DHE 1024 bits 
Accepted TLSv1.2 128 bits DHE-RSA-AES128-SHA   DHE 1024 bits 

要啓用TLS 1.2和定義密碼列表,請執行以下操作:

#enable/diable https 
server.ssl.enabled=true 

#ssl ciphers 
server.ssl.ciphers=TLS_RSA_WITH_AES_128_CBC_SHA256, INCLUDE_ANY_OTHER_ONES_YOU_NEED_TO_SUPPORT 

# SSL protocol to use. 
server.ssl.protocol=TLS 

# Enabled SSL protocols. 
server.ssl.enabled-protocols=TLSv1.2 

對於列表您可以使用的密碼https://testssl.sh/openssl-rfc.mapping.htmlhttps://msdn.microsoft.com/en-us/library/windows/desktop/mt813794(v=vs.85).aspx

相關問題