티스토리 뷰

[관련 시리즈]

현상

운영중인 서버에서 타 기관의 API를 호출하여 데이터를 통신하는 부분이 있음.

여러 기관중 특정 기관에서만 데이터가 들어오지 않는 현상 발생.


원인분석

처음에는 요청하는 기관의 ip 및 port가 열려있는지 여부를 의심하였지만 확인결과 정상적으로 열려있음을 확인.

어떤 LOG가 찍히는지 상세하게 확인하기 위해 LOG 추가 후 모니터링 해 본 결과 아래와 같은 에러 메시지가 확인.

javax.net.ssl.SSLException: Received fatal alert: protocol_version

해당 메시지 확인 결과 ssl관련 프로토콜 버전으로 인해 발생한것으로 보임.

해당기관은 https://로 API를 제공하고 있었음.

하지만 다른 기관의 https://로 API를 제공하고 있는 데이터는 정상적으로 데이터 수신 확인.

 

API를 요청하는 WAS 인스턴스의 JVM https관련 옵션을 확인하였으나 별다른 설정이 선언되어 있지 않았음.

운영환경은 java7 사용 중이었으며 java7에서는 기본 설정으로 TLSv1.0을 지원.(TLS.v1.1, TLSv1.2, SSLv3.0 까지 지원 가능)

해당 기관에서는 TLSv1.0 이상의 버전을 사용하는 것으로 판단.


해결 

WAS 인스턴스 구동시 JVM 옵션에 아래와 같은 옵션을 추가 설정

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

 

데이터가 정상적으로 수신되는 것 확인.

 

JVM 설정 외에도 소스단에서 설정해 주는 방법

    System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");

있지만 사용하는 작업영역이 세분화 되어있기때문에 미적용.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함