본문 바로가기
컴퓨터관련/Java

[Java]HTTP 통신 시 SSLHandshakeException 에러

by 빛과 어둠사이 2019. 11. 1.
728x90
반응형
SMALL

웹 개발을 하다 보면

외부와 통신하게끔 만드는 일이 많이 있습니다.

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 에러 발생 시

조치하는 방법이였습니다~




728x90
반응형
LIST