본문 바로가기
카테고리 없음

[이슈] JDK 버전 업데이트에 의한 TLS 통신 에러 이슈

by 탷 2022. 8. 16.

윈도우 로컬에서 사용하던 프로그램의 기능 중 TLS 통신으로 데이터를 가져오는 기능이 작동하지 않게됐다.

얼마 전까지만 해도 잘 되던 것을 확인했는데 갑자기 무슨 일인가 했다.

 

우선, 에러 내용은 다음과 같았다.

 javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake caused by java.io.EOFException: SSL peer shut down incorrectly

 

VM에서 개발 중이던 프로그램을 테스트하던 중이라 소스가 잘못되었나 싶었다.

확인이 됐었던 초기버전으로 급하게 돌려 테스트하였지만 여전히 문제가 발생했다.

두 환경을 모두 살펴보던 중 VM의 JDK 버전이 최신으로 바뀐 것을 확인했다.

 

관련이 있나 찾아보던 중 release note를 확인했고, Java 버전별로 지원하는 TLS가 다르다는 것을 알게 되었다.

 

Java Version SSL / TLS Default Other 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는 2015년 1월 패치에서 사용이 중지되었다.

* 출처: https://www.ateam-oracle.com/post/transport-level-security-tls-and-java

 

Transport Level Security (TLS) and Java

Know Which Versions of TLS are Supported in Recent Java Versions NOTE: A more comprehensive examination of TLS and what to examine when setting up web service integrations in Oracle Cloud Saas extensions has been published. See Transport Layer Security (TL

www.ateam-oracle.com

 

 

하지만 사용하던 jdk는 major 버전이 바뀐 게 아니라 jdk1.8 초기 버전에서 jdk1.8 최신 버전으로 업데이트가 되었을 뿐이었다.

좀 더 찾아보니 같은 jdk1.8이더라도 minor 버전 중 TLS 관련하여 바뀌었다는 내용의 release note가 있었다.

 

출처: https://www.oracle.com/java/technologies/javase/8all-relnotes.html#R180_291

 

Consolidated JDK 8 Release Notes

The full version string for this update release is 1.8.0_291-b10 (where "b" means "build"). The version number is 8u291. The security baselines for the Java Runtime Environment (JRE) at the time of the release of JDK 8u291 are specified in the following ta

www.oracle.com

JDK 8u291 부터 TLS 1.0과 TLS 1.1의 지원이 중단되고 TLS 1.2와 TLS 1.3을 지원하는 것으로 바뀐 것이다.

 

실제로 VM에 JDK 8u281 버전과 8u291 버전을 설치하여 테스트해보니

JDK 8u281 버전까지는 문제없이 TLS 통신이 되던 게

JDK 8u291 버전으로 변경하니까 TLS 통신이 안되는 걸 확인할 수 있었다.

로컬에서 사용하던 프로그램은 JDK1.6을 사용하도록 되어있어서 TLS 버전이 맞지 않게 되어

기능이 정상 작동하지 않았던 것 같다.

가능하면 해당 프로그램의 JDK 버전을 최신화시켜보고, 

bouncy castle을 이용하는 방안도 있다고 하니, 이 방법도 이용해보자.