2015-01-16 3 views
3

Tomcat에서 TLS 1.2를 Spring 부팅 1.2.1에서 사용하려고합니다. SSL 핸드 셰이크 오류로 인해 Android 5.0이 기본 SSL 설정에 연결하지 못했습니다. Android 4.4, iOS, Firefox 및 Chrome은 모두 기본 버전에 연결됩니다. 나는 이것이 안드로이드 5.0에서 지원되는 TLS 프로토콜과 봄 부트 톰캣 기본값 (TLS v1?)의 불일치 때문이라고 생각한다.스프링 부트에서 TLS 1.2를 어떻게 활성화합니까?

는 내가이 설정있는 application.properties 변경하려면 상상 :

server.ssl.protocol=TLS 

하지만 난 다른 허용 문자열을 위치 (또는 어떤이있는 경우)하지 않았습니다. spring boot github에서 "프로토콜"을 검색하여 찾을 수있는 열거 형은 없습니다. "TLSv1.2"를 시도했지만 효과가없는 것으로 보입니다. application.properties에서

현재 SSL 구성은 다음과 같습니다

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)에 전달합니다. boot/blob/master/spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactory.java # L266) 그래서 Boot보다는 Tomcat을 사용하여 허용되는 값을 결정합니다. AFAIK, 'TLSv1.2'는 필요한 값입니다. –

답변

6

TLS 1.2는 스프링 부트 1.2.1에서 기본적으로 활성화되어 있습니다. 이것은

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

그래서 내 문제는 별개의 것이어야 출력 명령 줄

openssl s_client -connect serverAddress:port 

에서 다음을 실행하여 확인할 수 있습니다.

+0

우리는 안드로이드 클라이언트가 임베디드 바람둥이에 의해 구동되는 우리의 봄 부팅 1.4.1 가능 서버를 SSL로 연결하지 못하는 비슷한 문제를 겪고 있습니다. 근본적인 원인을 밝히지 못했지만 언급 한 바와 같이 SSL 프로토콜과의 불일치가 의심됩니다. 문제를 해결할 수 있었고 경로를 공유 할 수 있었습니까? Thnx – baraka

+0

@baraka 내 문제의 근본 원인은 Android 구현에있는 버그입니다. http://stackoverflow.com/questions/28011581/websocket-ssl-handshake-failure를 참조하십시오. 이 버그는 Tyrus 레퍼런스 websocket에 의해 발생되었지만 AndroidAsync 또는 nv-websocket과 같은 다른 구현에서는 발생하지 않았습니다. 이것이 귀하의 특정 사건과 관련이 있는지 여부는 확실하지 않습니다. – mattm

+0

나는 똑같은 문제를 겪고 있습니다 ...이 사람들을 고칠 수 있었습니까? – mor222

2

봄 부팅에 포함 된 기본 암호로 인해 SSL 핸드 셰이크 오류가 발생할 수 있습니다. 암호 세트를 정의하는 것이 좋습니다. 비슷한 문제가 있었는데 수정 된 방법은 발신자에게 SSLScan을 사용한 다음 Google 시스템을 검색하여 일치하는 항목이 있는지 확인하는 것입니다. 이를 통해 일치 항목이없는 것을 확인하고 지원해야하는 암호 목록을 정의 할 수있었습니다. 의 목록은

#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 

다음을 수행하십시오 TLS 1.2을 사용하려면

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 

및 암호 목록을 정의 : SSLScan이 사용

봄 부팅이 사용하는 기본 암호입니다 사용할 수있는 암호 https://testssl.sh/openssl-rfc.mapping.htmlhttps://msdn.microsoft.com/en-us/library/windows/desktop/mt813794(v=vs.85).aspx

관련 문제