Java

Java SSL/TLS 지원 버전과 디폴트 프로토콜 변경하기

제끼나·2018년 7월 16일·조회 48,819

1. 개요

요즘 보안 요구 사항에 보면 TLSv1.1, TLSv1.2 이상으로 하도록 권고하고 있습니다. 

사용하는 제품들 버전별로 지원하는 TLS 버전도 알고 있어야 할 것 같습니다! :)

모르고 있다가 SSLException 들을 만나게 된다면 당황스러우시겠죠? ㅎㅎㅎ

2. 에러 내용

아래의 로그는 Apache HTTP Server 2.4 버전 + jdk1.7 사용 Apache Tomcat 7.0 으로 구성되어 있는 시스템에서

HTTPS 통신 시 발생한 로그 입니다. 웹서버에 SSLProtocol 을 TLSv1.1, TLSv1.2 를 설정하였더니 이런 Exception을 뿌리네요.

org.springframework.web.client.ResourceAccessException: I/O error: Received fatal alert: protocol_version; nested exception is javax.net.ssl.SSLException: Received fatal alert: protocol_version

3. 왜 이런 현상이?

java 버전별로 defalut로 설정되는 프로토콜 버전이 있습니다. 아래 표 참고하시구요 :)

Java VersionSSL/TLS DefaultOther Supported Versions
Java 6 TLS 1.0 TLS 1.1 (update 111 and later), SSLv3.0*
Java 7 TLS 1.0 TLS 1.2, TLS 1.1, SSLv3.0*
Java 8 TLS 1.2 TLS 1.1, TLS 1.0, SSLv3.0*

* SSLv3 support disabled in January, 2015 patch releases

※ 참고 url : http://www.ateam-oracle.com/tls-and-java/

4. 조치 방법

Java 7에서 TLSv1.1과 TLSv1.2를 지원한다고 하니까, 이렇게 설정해 보겠습니다.

Tomcat 7 서버의 bin/catalina.sh 의 CATALINA_OPTS에 다음 옵션 추가하고 재기동 해주면 해결! 

-Dhttps.protocols=TLSv1.1,TLSv1.2

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.