Study/Java

JAVA 인증서 추가

LoonyHyun 2021. 8. 6. 14:40
반응형

HTTPS 통신을 시도 중 인증서가 필요한 경우가 있다.

 

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: 

 

위와 같이 SSLHandshakeException 이 발생하면서 PKIX path build failed 가 나타나면 인증서를 확인할 수 없어 발생하는 경우가 나타난다.

 

Chrome이나 InternetExplorer 같은 브라우저 같은 경우 브라우저에서 자동으로 인증서를 다운로드 받아 처리되기 때문에 위같은 증상이 나타나지 않지만,

일반적인 java로 HTTPS 통신을 시도 시 나타난다.

 

해결방법은 아래와 같다.

 

1. 인증서 다운로드

2. 인증서를 JDK 에 등록

 

인증서 다운로드를 위해서 InstallCert.java 파일을 활용한다.

InstallCert.java
0.01MB

 

위 파일을 컴파일 하여 class 를 만든다.

( 원하는 JAVA 버전에 맞게 해당되는 버전의 JDK 로 실행하길 바란다. )

명령어는 다음과 같다.

 

javac InstallCert.java

 

그 후 원하는 사이트의 인증서를 파라미터로 작성하여 다운로드 한다.

 

java -cp . InstallCert xxx.xxx.xxx.xxx

 

위 명령어 실행하면 

 

Added certificate to keystore 'jssecacerts' using alias 'xxx.xxx.xxx.xxx-1'

위와 같은 결과가 나타나면서 jssecacerts 파일이 생성된다.

 

해당 파일을 jre 에 등록하기 위해선 아래와 같이 명령을 작성하면 된다.

 

keytool -exportcert -keystore jssecacerts -storepass changeit -file output.cert -alias xxx.xxx.xxx.xxx-1

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

 

이미 존재하는 인증서일 경우 삭제 명령은 아래와 같다.

 

keytool -delete -alias xxx.xxx.xxx.xxx-1 -keystore ${JAVA_HOME}/jre/lib/security/cacerts -storepass changeit