새소식

개발+공부/JAVA 자바

[JAVA] https Error: PKIX path building failed 해결 방법

  • -
728x90

InstallCert를 사용해 SSL/TLS Server 인증서 생성

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
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
unable to find valid certification path to requested target

위 exception은 연결하려는 remote 도메인의 인증서가 신뢰하는 인증기관 인증서 목록(keystore)에 존재하지 않기 때문에 발생한다.

보안 담당자로부터 인증서 파일을 받아 해결할 수 있지만 이게 가능했으면 검색을 안했겠지.

 

연결하려는 도메인 주소를 알면 인증서를 다운받을 수 있다.

 

1. InstallCert.java 다운로드

먼저 curl 명령어로 InstallCert.java 파일을 다운받는다.

curl -O https://gist.githubusercontent.com/lesstif/cd26f57b7cfd2cd55241b20e05b5cd93/raw/InstallCert.java

 

2. InstallCert.java 이동

다운받은 파일을 jdk위치/lib/security 경로로 옮겨준다. ${JAVA_HOME}/lib/security/가 정석인듯하다.

하지만 나는 intelliJ에서 사용하는 JDK와 JAVA_HOME 경로가 다르다. 따라서, 해당 경로로 파일을 옮겨준다.File>Project Structure>Platform Settings>SDKs 메뉴에서 사용중인 jdk의 JDK home path를 찾을 수 있다.{JDK home path}/lib/security/ 위치로 다운받은 InstallCert.java를 옮긴다.

mv InstallCert.java {JDK home path}/lib/security/

 

3. 인증서 생성하기

InstallCert.java 컴파일한다.

javac InstallCert.java

InstallCert를 실행한다. 연결하려는 도메인을 parameter로 줘야한다!

java -cp ./ InstallCert [IP/HOST]

ex) java -cp ./ InstallCert google.com

keystore에 추가여부를 물어보는 데, 1을 선택한다.

Added Certificate to keystore 'jssecacerts' using alias 'google.com-1'

와 같은 alias을 출력하면 인증서를 정상적으로 생성한 것이다.

 

만약 1번이 안되면 2번으로 다시 시도해서 되는 것으로 하면 된다.

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.