Received fatal alert: protocol_version 에러원인과 해결방법

이애옹·2023년 10월 30일
0

HttpURLConnection를 사용해서 API를 호출 하던 중 에러가 발생했다!!

❌ 에러메시지

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



🗝️ 에러 발생원인

  • SSL/TLS 프로토콜 버전에 관한 문제로, 클라이언트와 연결하려는 서버간의 프로토콜 불일치로 발생하는 문제

  • HTTPS 통신 시 SSLProtocol 버전이 권장하는 버전보다 낮을 경우 발생

▼ 자바 버전 별 default/supported protocol version

이미지 출처 : https://www.ateam-oracle.com/tls-and-java



📝 SSL과 TLS

  • SSL(Secure Socket Layer) : 이전에 사용하던 암호화 채널. 현재 SSL(1.0, 2.0, 3.0)의 모든 버전은 여러 가지 보안 문제로 사용되지 않고 대부분의 브라우저에서 경고를 표시한다. SSL 3.0은 TLS 1.0으로 대체되었다.

  • TLS(Transport Layer Security) : 표준화된 통신용 암호화 프로토콜이다. 현재 TLS 버전(1.0, 1.1, 1.2)을 사용하고 있으며 1.3 버전은 초안이다. 구글 크롬과 같은 웹 브라우저는 이제 HTTP 웹사이트를 ‘안전하지 않음’으로 표시하고 경고 창 발생시킴.



💊 해결 방안

  • SSL/TLS 버전 호환성 세팅 : 코드내에서 SSL/TLS 버전을 명시적으로 설정하기
System.setProperty("https.protocols", "TLSv1.2"); // 또는 "TLSv1.1" 또는 "TLSv1"
  • 암호 스위트 : 암호 스위트 방식 설정하기
System.setProperty("https.cipherSuites", "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");

일단 나는 코드 내에 SSL/TLS 버전 호환성 세팅 하는 부분을 추가 해주니까 정상적으로 호출 됐다!!

위치는 URL 세팅하는 부분 바로 밑에 넣어줬다~ .~



👀 참고자료

profile
안녕하세요

0개의 댓글