Java PKIX path building failed 에러 (카카오 로그인)
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)
* 결과로 아래와 같은 코드가 나오는데 해당 라인을 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
등록 시 아래와 같이 인증서를 신뢰한다고 하면 저장소에 추가가 된다.
인텔리제이 및 이클립스 재기동 하면 정상적으로 접속이 잘 된다.