티스토리 뷰
반응형
서버의 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)
반응형
'Java' 카테고리의 다른 글
[Java] javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching IP Address found. 에러 해결 (0) | 2021.12.01 |
---|---|
[Java] 두 날짜 차이 구하기 (0) | 2021.11.24 |
[Java] Spring RestTemplate timeout 설정 (0) | 2021.09.23 |
[Java] Spring @Async를 이용한 메소드 비동기 처리 (2) | 2021.09.16 |
[Java] List 중복 제거 (0) | 2021.06.15 |