시스템/쿠버네티스

[쿠버네티스] Java PKIX path building failed: 에러 해결

cbwstar 2024. 1. 12. 13:50
728x90
반응형

Client error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

1. SSL 인증서를 추출해서 Java VM 에 등록해 주면 해결됩니다.

/* 1.github에 올려 놓은 소스 다운로드 */
curl -O https://gist.githubusercontent.com/lesstif/cd26f57b7cfd2cd55241b20e05b5cd93/raw/InstallCert.java

/* 2.다운받은 소스 컴파일 */
javac InstallCert.java

/* 3. InstallCert 실행 연결할려는 사이트 주소와 함계 예) invako.kro.kr
java -cp ./ InstallCert  invako.kro.kr
다음과 같은 메시지가 나오고 저장되는데 keystore(jssecacerts) 명과 alias(invako.kro.kr-1) 명을 기억합니다.

Added certificate to keystore 'jssecacerts' using alias 'invako.kro.kr-1'
이제 생성된 keystore 파일 jssecacerts 에 있는 인증서를 output.cert 라는 파일로 저장합니다. -alias 옵션 뒤에는 위에서 표시한 alias 이름을 주어야 합니다.

keytool -exportcert -keystore jssecacerts -storepass changeit -file output.cert -alias invako.kro.kr-1
JAVA_HOME 변수가 설정되어 있어야 하며 root 로 실행해야 합니다.
아래 명령어로 JVM 의 keystore 에 CA 인증서를 추가합니다.

sudo  keytool -importcert -keystore ${JAVA_HOME}/lib/security/cacerts -storepass changeit -file output.cert -alias letsencrypt
만약 해당 label 이 있다면 다음 에러가 발생합니다.
keytool error: java.lang.Exception: Certificate not imported, alias <letsencrypt> already exists

이 경우 아래 명령어로 기존 label 을 삭제합니다.
sudo keytool -delete  -keystore ${JAVA_HOME}/lib/security/cacerts -storepass changeit  -alias letsencrypt
728x90
반응형