잘 정리해보자
https Error - PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException 본문
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에러는 실행됐다,,
'Spring > Spring Boot' 카테고리의 다른 글
Spring Batch 설정과 시작 (0) | 2022.01.11 |
---|---|
Spring Batch Error : org.springframework.dao.EmptyResultDataAccessException: Item 2 of 10 did not update any rows (0) | 2022.01.10 |
Spring Batch Error : Cannot change the ExecutorType when there is an existing transaction (0) | 2022.01.10 |
Nginx Error - 504 Gateway Time-out (0) | 2022.01.10 |
Spring Boot에 Swagger 적용 (3.0) (0) | 2022.01.05 |