lty's Blog

TLS 버전 불일치 SSL peer shut down incorrectly 해결 본문

Backend

TLS 버전 불일치 SSL peer shut down incorrectly 해결

LIMTAEYANG 2026. 2. 10. 23:45
1. TLS (Transport Layer Security)

 

인터넷 통신을 암호화하여 데이터를 안전하게 전송하기 위한 보안 프로토콜이며 통신 데이터를 암호화하고, 서버 인증을 수행하며, 데이터 위변조 여부를 검증하여 안전한 네트워크 통신을 가능하게 한다. 

 

SSL peer shut down incorrectly

TLS/SSL 연결이 정상 종료 절차 없이 상대(서버 또는 클라이언트)가 연결을 끊었을 때 발생하는 오류

가장 흔한 원인으로 TLS 버전 불일치로 인해 발생한다. 

 

해결방안 

1. 자바 8 버전 이상 JDK 사용 

2. 자바 7 버전의 TLS 설정 강제하기 

 

자바 7과 8 환경에서 TLS 버전 

구분 JAVA 7 JAVA 8
TLS 기본값 TLS 1.0 TLS 1.2 (기본)
TLS 지원 범위 TLS 1.0 ~ 1.2 TLS 1.0 ~ 1.2

 

자바 7 서비스 (클라이언트)에서 1.2 버전 환경의 REST API 호출 시 TLS 버전(자바 7은 TLS 1.0으로 불일치 가능성 있음)이 맞지 않아 통신 오류가 발생할 수 있고 자바 8 버전 사용을 권장하지만, 버전을 올리지 못하는 경우 TLS 버전을 명시하여 해결할 수 있다. 

2. 자바 7버전 서비스 TLS 버전 강제 하기 - setenv.sh

 

Tomcat 실행 시 JVM 옵션을 넣는 파일이며 Tomcat 시작 시 자동 적용된다. 

(파일을 기본 제공하지 않아 직접 만들어야 하고 TLS 설정을 강제할 수 있다.)

 

파일경로 : 톰캣경로/bin/setenv.sh

 

export JAVA_OPTS="$JAVA_OPTS -Dhttps.protocols=TLSv1.2 -Djdk.tls.client.protocols=TLSv1.2"

# export : Linux 에서 환경변수 설정 명령어
# $JAVA_OPTS : JVM 옵션 설정 (안에 있는 옵션을 같이 적용)
# -D 옵션 : Java 실행 시 설정값 전달 ( -D설정이름=값 )

# https.protocols=TLSv1.2 : Https 통신 시 사용할 TLS 버전 지정, 없으면 JDK 기본값으로 지정
# jdk.tls.client.protocols=TLSv1.2 : Java 전체 TLS Client 통신 버전 지정 

# 라이브러리마다 참고하는 값이 달라 2개 옵션 명시

 

 

Comments