Back-end/Linux

Linux환경에서 Java InstallCert를 사용하여 외부 SSL/TLS인증서를 Import 하기.

cheersHena 2020. 12. 8. 14:15
반응형

Linux환경에서 Java InstallCert를 사용하여 외부 SSL/TLS 인증서를 Import 하기. 

 

Java를 사용하여 HTTPS로 remote 사이트에 연결 또는 

인증서 없이  HttpsURLConnection을 사용하면 SSLHandshakeException 이 발생한다.

 

PKIX path building failed

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

여러가지 원인이 있을 수 있으나 보통은 연결하려는 remote 사이트의 인증서가 신뢰하는 인증기관 인증서 목록

(keystore)에 없기 때문이다.

해결하기 위해서는 현재 설치된 JDK의 keystore에 인증서를 생성하여 sercurity 이하에 저장해야한다. 

 

 

1. 구글링 > InstallCert.Java 다운로드 

 

 

2. 다운로드 경로에서 컴파일한다.

> javac InstallCert.java

 

 

 

구동 : hostname에 SSL인증서를 받아올 호스트를 입력해준다.

-> java -cp InstallCert [hostname]

 

 

 

 

실행을 하면 마지막에 아래와 같은 부분이 나타나게 된다

Enter certificate to add to trusted keystore or 'q' to quit: [1]

1을 눌러서 인증서 저장

 

 

 

 

인증서를 저장하면 

 

Added certificate to keystore 'jssecacerts' using alias 'hostname' 

이와 같은 메세지가 나오면서 jssecacerts 파일로 저장이 된다.

 

 

 

 

3. 인증서를 $JAVA_HOME/jre/lib/security 폴더에 해당 파일을 복사한다.

(필자는 처음부터 security에서 실행했기 때문에 복사할필요 없음)

인증서명 : jssecacerts / alias 명이 명시된다.

인증서의 기본 패스워드(certpass): changeit 

 

4. WAS 재기동.

 

 

다른방법은

java vm 옵션으로 '-Djavax.net.ssl.trustStore=인증서 경로' 를 추가해준다.




윈도우 환경에서 로컬웹으로 작업중이라면, 

위와 같은방법으로 똑같이 cmd창에서 실행해주면 된다. 

 

반응형