원래 포스팅 : http://kgj1.blog.me/220584997842
JAVA 애플리케이션에서 JSSE (Java Secure Socket Extension)를 통해 사설 인증서를 사용하는 서버와 SSL 통신을 해야 할 경우가 있다.
그런데 JAVA에서는 (KeyStore에 등록되어 있는) 신뢰할 수 있는 공인 인증서가 아니기 때문에 아래와 같은 오류를 뱉어낸다.
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
이를 해결하는 가장 간단한 방법은..
SSL 통신에 사용하는 사설 인증서를 JSSE KeyStore에 등록하는 것이다.
아래 파일을 다운로드하고 컴파일 한 뒤 실행하면 jssecacerts (JSSE keystore 파일)에 원하는 인증서를 자동으로 등록해준다.
jssecacerts 파일은 jre 의 security 디렉토리에 존재해야 하는데, 번거로움을 피하기 위해 아예 해당 디렉토리로 이동하여 작업을 하는 게 좋다. (jssecacerts 원본 파일은 백업을 해두는 게 좋겠다.)
1. jre security 경로로 이동 (아래는 내 서버 기준의 경로이며 환경에 따라 다를 수 있음)
$ cd /usr/lib/jvm/jre-1.7.0/lib/security
2. 위 소스를 다운받고 컴파일
$ javac InstallCert.java
3. InstallCert 를 실행하여 인증서를 다운로드하고 jssecacerts 에 append
$ java InstallCert [인증서를 다운로드할 도메인 or IP 주소]:[포트]
4. 반영을 위해 애플리케이션 재시작
이제 애플리케이션에서 SSL 통신이 잘 되는지 확인한다.
<참고>
1. keystore에 등록된 인증서를 확인하는 방법 (default 패스워드는 changeit)
$ keytool -list -keystore jssecacerts
2. keystore에 등록된 인증서를 제거하는 방법
$ keytool -delete -keystore jssecacerts -alias [등록된 인증서의 이름(위 list 명령으로 확인 가능)]
linux javac and java with classpath (0) | 2020.02.13 |
---|---|
tomcat 8 SHA-256 적용 (0) | 2019.05.22 |
메일발송 (0) | 2015.05.29 |
eclipse web service client - exceptionName:org.apache.axis.NoEndPointException (0) | 2015.05.15 |
java process 옵션 검색 명령 jps (0) | 2014.04.18 |
댓글 영역