IT/JAVA(Framework)

Java PKIX path building failed 에러 (카카오 로그인)

꿈꾸는사나이 2022. 12. 13. 15:32
반응형

Java에서 https를 이용한 SSL 통신을 할 때 PKIX path building failed에러가 발생하게 된다.

 

* 해결방법

1. jdk 및 jre버전 업데이트

2. Java구버전은 결론으로 말하자면 Target URL의 SSL인증서를 추출해서 Java VM 에 등록하기

3. https로 통신하지 않고, http로 통신하기

 

 

* 2번 방법으로 구현 시(1~5번은 리눅스 추천, 윈도우로해도 상관은 없으나 필자는 1~5번은 리눅스에서 작업 함)

1. 인증서 추출하는 JAVA파일 다운로드

curl -O https://gist.githubusercontent.com/lesstif/cd26f57b7cfd2cd55241b20e05b5cd93/raw/InstallCert.java

 

2. 다운로드 받은 InstallCert JAVA파일 컴파일

javac InstallCert.java

 

3. 인증서 다운로드(필자는 카카오 인증 시 해당 에러가 발생 해서 카카오 인증 URL로 작성)

java -cp ./ InstallCert kauth.kakao.com

 

4.  아래와 같이 다운로드 받을 인증서 선택 시 2번 선택(Digicert.com)

kauth.kakao.com 인증서 종류

* 결과로 아래와 같은 코드가 나오는데 해당 라인을 5번에서 참고해야 함

Added certificate to keystore 'jssecacerts' using alias 'kauth.kakao.com-2'

 

5. keystore 파일 jssecacerts 에 있는 인증서를 kauth.cert 라는 파일로 저장

keytool -exportcert -keystore jssecacerts -storepass changeit -file kauth.cert -alias kauth.kakao.com-2

 

6. 리눅스에서 생성 한 인증서를 복사해서 작업할 PC로 가져오고, keytool을 이용해서 인증서를 등록한다.

    - keytool -importcert -keystore JDK경로/jre/lib/security/cacerts -storepass changeit -file kauth.cert -alias letsencrypt

keytool -importcert -keystore D:/java/jdk1.8.0_65/jre/lib/security/cacerts -storepass changeit -file kauth.cert -alias letsencrypt

등록 시 아래와 같이 인증서를 신뢰한다고 하면 저장소에 추가가 된다.

 

인텔리제이 및 이클립스 재기동 하면 정상적으로 접속이 잘 된다.

반응형