까페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
'오류 처리' 카테고리의 다른 글
서버 to 서버간 통신(http, https) 로직 개발시 체크해야할 사항 (0) | 2019.05.07 |
---|