잘 정리해보자

https Error - PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException 본문

Spring/Spring Boot

https Error - PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException

토마토오이 2022. 1. 10. 21:28

 

 에러 메시지 :

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException

 

 

발생 원인 :

Spring Boot에서 @FeignClient로 https로 API 호출한 경우 발생. (인증서 등록 안함)

java에서 https로 통신할 때, SSL인증서를 등록 안해서 발생했습니다. (로컬에서 발생해서 로컬JVM에 등록 예정)

 

 

해결 :

급한대로 http로 호출해서 테스트하다가, SSL인증서를 추출해 Java VM에 등록.

 

 

아래 링크를 참고해 인증서를 등록했습니다.

https://www.lesstif.com/system-admin/java-validatorexception-keystore-ssl-tls-import-12451848.html

 

 

* 관리자 권한으로 cmd 실행 후, root경로에서 진행.

 

1. InstallCert.java 생성

 

2. 생성한 java 파일 cmd에서 실행

javac InstallCert.java

 

3. ssl인증서를 받아올 호스트명 입력

java -cp ./ InstallCert test.co.kr

실행하면 "Enter certificate to add to trusted keystore or 'q' to quit: [1]" 으로 출력되고 enter 누르면 

"Added certificate to keystore 'jssecacerts' using alias 'test.co.kr' " 출력.

 

'jssecacerts' : keystore 명

alias 'test.co.kr' : alias 명 (앞으로 alias로 등록할 예정이니 기억)

 

 

4. 인증서 export

keytool -exportcert -keystore jssecacerts -storepass changeit -file output.cert -alias test.co.kr

keystore의 초기 비밀번호는 "changeit", 

keystore 'jssecacerts' 에서 output.cert 이름으로 alias 호스트의 인증서를 export한다.

 

실행 후

"인증서가 <output.cert> 파일에 저장되었습니다." 출력.

 

 

5. 인증서 저장

keytool -importcert -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit -file output.cert -alias test.co.kr

> JAVA_HOME이 환경변수에 저장된 경우 %JAVA_HOME%으로 호출해서 사용

 

jdk안의 jre 파일에 ssl인증서 저장

 

 

실행 후

"이 인증서를 신뢰합니까? [아니오]:  y
인증서가 키 저장소에 추가되었습니다." 출력.

 

 

 

 

인증서 등록하고 was 환경은 재시동 했지만, 여전히 PKIX에러는 실행됐다,,

 

Comments