Java
[Java] SSL 인증서 PKIX path building failed 에러 해결
Jane Kwon
2021. 9. 24. 15:58
반응형
서버의 SSL 인증서 교체 후 해당 서버와 다른 서버가 통신이 안되는 이슈가 발생!
I/O error on POST request for "https://janes.shop:443": sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is 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
원인은 사설 인증서의 경우에 신뢰하는 인증 기관 목록(keystore)에 없어서 발생한다.
사용하고 있는 인증서는 Let's encrypt에서 발급받은 무료 인증서인데 이 경우에도 발생할 수 있다고 한다.
(교체 전에도 같은 인증 기관의 인증서를 사용했었는데 왜 갑자기 이 같은 에러가 발생한건지는 알 수 없음)
인증서를 교체한 서버와 통신하려는 서버에서 해당 서버의 SSL 인증서 정보를 확인한다.
openssl s_client -connect janes.shop:443 -showcerts
이제 Let's encrypt 인증 기관에서 발급 받은 인증서의 root cert와 ca cert를 다운받아 keystore에 import 한다.
root cert 다운로드
curl -o root.cer https://letsencrypt.org/certs/isrgrootx1.pem
ca cert 다운로드
curl -o ca.cer https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem
keystore에 import
sudo keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -alias letsroot -file root.cer -storepass changeit -noprompt
sudo keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -alias letsca -file ca.cer -storepass changeit -noprompt
작업 후 서버 재기동
(참고 : https://www.lesstif.com/system-admin/java-validatorexception-keystore-ssl-tls-import-12451848.html)
반응형