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 파일을 활용한다.
위 파일을 컴파일 하여 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
'Study > Java' 카테고리의 다른 글
[XSSF] EXCEL 파일 읽기 시 이슈사항 : NoSuchMethodError (0) | 2021.01.03 |
---|---|
[TEST] File Read Performance (파일 읽기 처리 속도) - 2 (0) | 2020.12.17 |
[TEST] File Read Performance (파일 읽기 처리 속도) (0) | 2020.12.17 |
[log4j 충돌] SLF4J: Class path contains multiple SLF4J bindings. (0) | 2020.12.09 |
Http post(s) example (0) | 2020.12.09 |