웹 개발을 하다 보면
외부와 통신하게끔 만드는 일이 많이 있습니다.
HTTP API를 통해
외부와 통신을 해야 하는 경우가 있습니다.
이번에 저도 그래서 그렇게 개발을 하는데
갑자기 에러가 발생이 되었습니다.
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
이런 에러가 발생되었습니다.
무슨 에러인지 잘 모르겠어서
구글링을 해 보았습니다.
그랬더니 서버와 클라이언트간의
SSL/ TLS 버젼이 안맞아서
발생되는 에러라고 하더라고요.
저는 현재 JDK7을 사용하고 있는데
JDK7에서는 TLSv1을 기본으로
제공한다고 하더라고요.
그런데 서버에서는 TLSv1.2를
설정해서 사용하는거 같았어요.
그래서 이것을 변경해야 할 거 같았어요.
그래서 조치방법을 이것 저것
찾아보았습니다.
방법은 많이 나오긴 하더라고요.
톰켓 설정 바꾸는 방법,
JDK 버젼을 올리는 방법 등
많은 방법들이 나오더라고요.
그런데 우선 위의 2가지 방법은
적용하기 힘들 거 같더라고요.
톰켓 설정 바꾸는 것은
추후 운영환경에서도 바꿔야 하는데
이것이 어떻게 될 지 알 수가 없잖아요.
그리고 JDK 버젼을 올리는 것은
더더욱 힘든 상황이고요.
그래서 다른 방법을 찾다가
소스에서 할 수 있는 방법이 있다고 해서
해당 방법으로 해봤어요.
소스에 한줄만 추가를 해 주면 되더라고요.
1111
위처럼 소스에 한 줄만 추가해주면 되요.
위처럼 추가를 해 주고 나니
위 SSLHandshakeException 에러는 발생하지 않았어요.
위처럼 한 줄만 추가해주면
TLS 버젼 차이로 인한
이런 handshake_failure Error은
조치를 할 수 있을거 같아요.
장기적으로는 JDK 버젼을 올려야 할 거 같으나,
우선 아직은 TLSv1.2까지는 지원이 되기 때문에
이렇게 조치를 해도 될 거 같네요.
이상으로 HTML API 통신 중
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 에러,
SSLHandshakeException 에러,
handshake_failure 에러 발생 시
조치하는 방법이였습니다~
'컴퓨터관련 > Java' 카테고리의 다른 글
[Java]이클립스, STS에서 자동재컴파일 설정 및 해제 (1) | 2022.01.03 |
---|---|
[Java]날짜 및 시간 비교 메소드 compareTo (0) | 2019.12.09 |
[Java]Mybatis에서의 샵(#)과 달러($)의 차이 (0) | 2019.09.26 |
[Java]이클립스 강제 Pull 받기 (1) | 2019.05.29 |
[Java]자바의 버젼 및 분류 정리 (0) | 2019.05.15 |