본문 바로가기
개발 환경 및 오류

pkix path building failed

by 노랑파랑 2022. 6. 15.
반응형

오류메세지

pkix path building failed

unable to find valid certification path to requested target

 

 


상황 및 원인

상황 : JAVA에서 HTTPS로 다른 사이트에 요청해서 데이터를 받아 쓰고 있음 ( HttpURLConnection )

원인 : 대부분의 원인은 연결하려는 사이트에서 사용하는 SSL 인증서 정보가 요청을 하는 사이트 JVM의 신뢰하는 인증기관 인증서 목록에 등록되어 있지 않기 때문

그 외 원인
- 서버/클라이언트간 사용하려는 SSL/TLS 버전이 맞지 않음 (Ex: TLS 1.0만 지원하는 서버에 1.2로 hand chaking 요청 등...)
- SSL/TLS 통신에 사용하려는 cipher 사이트가 오래되거나 지원하지 않음 (Ex: JDK 1.8부터는 RC4를 사용하려고 하면 에러 발생)

 


해결

      • 요청하는 URL 변경 ( http:// )
        • 위 방법을 시도하지 않아 해결되는지 알 수 없음. 
      • 서버 JVM 신뢰 인증기관 목록에 연결 사이트 인증서 추가 ( Chrome 기준으로 작성 )

1. 연결 사이트의 인증서를 찾는다.

예 ) TISTORY

2. 인증 경로에서 ROOT 인증서 클릭 > 인증서 보기

3. 자세히 > 파일에 복사

4. 파일 형식을 선택하고 인증서 내보내기 마법사 진행하여 인증서 내려받음.

5. keytool을 이용해 인증서를 추가한다.

            5-1 .${JAVA_HOME}/jre/security 경로에 있는 JVM 신뢰하는 인증서 목록 >> cacerts.cer 파일 준비

            5-2. cmd 창에서 아래 keytool 명령어로 cacerts 파일에 4번에서 내려받은 인증서 추가

keytool -import -alias <추가할 인증서 별칭> -trustcacerts -file
     <추가할 인증서> -keystore <JVM cacerts 파일>
        디폴트 비밀번호 : changeit

6. 추가된 cacerts.cer 파일을 서버 ${JAVA_HOME}/jre/security 경로에 올린다 (덮어쓰기 등)

7. WAS 재시작 

이미 인증서가 존재하거나, 추가해도 오류메세지가 표시되는경우 2번으로 돌아가 하위 인증서를 내려받아 진행함.

 


참고

*  keystore 인증서 목록 확인 명령어
              -v : 상세보기
keytool -list -v -keystore <인증서경로> '-alias <찾을 인증서 별칭>'

 

반응형