[TS] sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetjavax.net.ssl.SSLHandshakeException: sun.security.validator..

2023. 11. 15. 14:37ETC

반응형

Sever to Server로 URL 호출시에 다음 에러가 발생

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
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

 

 

VPN으로 접속 가능한 환경인데 각 서버는 내부에서 통신하는것 같다.

unable to find valid certification path to requested target
요청한 대상에 대한 유효한 인증 경로를 찾을 수 없습니다.

 

에러 메시지를 보면 인증서 문제 인것 같은데 해당 원격서버의 Root CA 인증서는 이미 가지고 있는 상태

 

추출해서 보면 기간이나 확인정보는 같은데....

 

인증서 교체를 했다니 해당 업체에 Root CA 인증서를 다시 요청해서 받았다.

 

우선 keystore의 경로 확인을 해야한다. 

 

keystore 위치는 실행 JVM 기준으로 찾아야해서 ps로 사용 프로세스 검색 

# ps -ef | grep 실행앱명

  /usr/bin/java ~~~

 

실행앱에서 사용중인 java 경로 확인 > 사용중인 java jvm 경로 확인

$ ll /usr/bin/java

   /usr/bin/java -> /etc/alternatives/java

 

$ ll /etc/alternatives/java

  /etc/alternatives/java  -> /usr/lib/jvm/java-버젼/jre/bin/java

 

사용중인 JVM 경로는 /usr/lib/jvm/java-버젼이며 keystore는 해당 경로 + ~/jre/lib/security/cacerts 에 해당한다.

 

keytool 명령어 사용 관련해서 기본 패스워드는 "changeit"로 되어 있다.

 

저장된 CA 인증서 목록 조회(CA 인증서 검색시 alias는 소문자로 입력하자)

keytool -list -keystore /usr/lib/jvm/java-버젼/jre/lib/security/cacerts

 

나의 경우는 이미 등록된 ROOT CA 인증서가 있었으나, 업체로 전달 받은 인증서로 교체작업을 수행했다.

 

작업순서는 백업 > 삭제 > 등록의 순으로 진행하였다.

 

백업 명령어

# keytool -exportcert -keystore /usr/lib/jvm/java-버젼/jre/lib/security/cacerts -alias "등록되어 있는 ROOTCA alias(소문자)" -file "등록 혹은 변경할 ROOTCA alias(소문자).pem"

 

삭제 명령어

# keytool -delete -keystore /usr/lib/jvm/java-버젼/jre/lib/security/cacerts -alias "등록되어 있는 ROOTCA alias"

 

등록 명령어

# keytool -import -keystore /usr/lib/jvm/java-버젼/jre/lib/security/cacerts -file "전달받은 root ca 인증서.pem" -alias "등록되어 있던 ROOTCA alias"

 

정상 등록 확인

keytool -list -keystore /usr/lib/jvm/java-버젼/jre/lib/security/cacerts | 등록되어 있던 ROOTCA alias

 

정상등록되어 있다면 목록에 표시되며 날짜는 등록일자로 표시된다.