본문 바로가기

오류 처리

https 통신시 SSLHandshakeException 에러가 발생하는 경우 조치

까페24 호스팅을 이용해서 사이트를 운영중이었는데 갑자기 사이트 에러 메일이 계속 날라오기에 급하게 서버 로그를 확인해봤더니  SSLHandshakeException 에러가 발생하고 있었습니다. 

com.mashape.unirest.http.exceptions.UnirestException: javax.net.ssl.SSLHandshakeException

 

운영중인 사이트에서 네이버 검색광고 API를 사용하는 부분에서 발생한 에러더군요. 

뭐지? 하면서 네이버 검색광고 API 공지사항에 가보니 SSL 인증서를 교체한다는 공지가 떠있더군요.

 

저는 인증서 교체하더라도 자동으로 새로운 인증서로 교체되는 줄 알았는데 그게 아닌가봐요. 직접 새로운 SSL 인증서를 서버에 import를 해줘야 하더군요. 

 

1. 까페24 호스팅 중인 사이트에 putty를 이용해서 접속합니다. 

 

2. gist에서 InstallCert.java를 다운로드 합니다. 

 

curl -O https://gist.githubusercontent.com/lesstif/cd26f57b7cfd2cd55241b20e05b5cd93/raw/InstallCert.java

 

 

루트에 InstallCert.java 파일이 다운로드된 걸 확인할 수 있어요. 

 

3. 해당 파일을 컴파일 합니다. 

javac InstallCert.java

 InstallCert.class 파일이 생성됩니다. 

 

 

4. InstallCert 클래스를 실행합니다.

java -cp ./ InstallCert api.naver.com

java -cp ./ InstallCert api.naver.com

 

위와 같은 화면이 나오면 1번을 눌러서 인증서를 저장합니다. 

그러면 아래와 같은 메세지가 표시되는데 alias 부분을 잘 기억해둡니다. 

Added certificate to keystore 'jssecacerts' using alias 'api.naver.com-1'

Added certificate to keystore 'jssecacerts' using alias 'api.naver.com-1'

 

그리고 jssecacerts 파일이 생성된걸 확인할 수 있어요. 

 

 

5. Keytool로 keystore에서 인증서 추출

changeit 는 비밀번호(특별히 수정할 필요 없음), alias는 앞에서 기억했던 alias를 입력합니다.

keytool -exportcert -keystore jssecacerts -storepass changeit -file output.cert -alias api.naver.com-1

output.cert 파일이 생성됩니다. 

 

 

6. 현재 JDK 의 keystore에 cert 파일 import

keytool -importcert -keystore ${JAVA_HOME}/jre/lib/security/cacerts -storepass changeit -file output.cert –alias api.naver.com-1

keytool -importcert -keystore ${JAVA_HOME}/jre/lib/security/cacerts -storepass changeit -file output.cert –alias api.naver.com-1

한글이 깨져서 잘 안보이는데 Yes를 입력 후 엔터키를 치면 됩니다. 

 

 

이렇게 처리하니까 더이상 SSLHandshakeException 오류가 발생하지 않고 API가 잘 작동하더군요. 

 

 

 

 

 

오류 수정하는데 도움 준 사이트 :  https://www.lesstif.com/pages/viewpage.action?pageId=12451848

 

Java 에서 ValidatorException 등 인증서 관련 에러 해결 - keystore에 SSL/TLS 인증서를 import 하기

java 에서 HTTPS 로 remote 사이트에 연결시 다음과 같은 Exception 이 발생

www.lesstif.com