잘 사용 되던 부분인데 갑자기 오류가 발생합니다

기존 잘 사용하던 부부인데 갑자기 오류가 나기 시작해서 문의 드립니다.
con.getResponseCode() 받아 오는 부분에서 오류가 발생합니다.
---------------------- 오류 내용 --------------------------------------
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

어떤 부분을 확인해야 하나요?

안녕하세요.
확인을 위해 앱 ID 알려주세요.

어떤 API호출 시 발생하였나요?


앱ID
https://developers.kakao.com/ 의 내 애플리케이션>앱 설정>요약 정보 : 기본정보에 있는 앱 ID
숫자로된 ID 입니다~
ex) 123456

255594
아이디로 되어있습니다.

REST API 키
와 동일한 키 값으로 설정되어있구요

HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.getRequestMethod(); —> 여기까지 정상출력
con.getResponseCode(); → 오류 발생
호출시 오류 발생합니다.
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

1개의 좋아요

PKIX path building failed 인증서 오류군요.

[긴급공지] 카카오 Open API 플랫폼 SSL 인증서 변경 안내 (수정됨, 재확인 필요) / [Urgent Notice] Replacing SSL certificates in Kakao Open API Platform (Revised, Need to recheck)

작년 9월 애플이 Symantec 계열 루트 인증서 9개를 (macOS/iOS) 루트 저장소에서 삭제한다는 내용을 인증서 발급기관을 통해 전달받았습니다. kakao.com 도메인에 대해 SSL 인증서 교체했구요.

해결방법은

위 두가지 버전 확인하셔서 버전 업데이트하시거나 버전 업데이트가 어려우신 경우

JVM(JRE)에 루트 인증서를 설치해주시면됩니다.

  • DigiCert Global Root G2

https://www.digicert.com/kb/digicert-root-certificates.htm


서버 OS 환경에서 ca 인증서가 지원이 되는지 어떻게 확인할 수 있나요?
CentOS/RHEL : ca-certificates-2015.2.4-65.0.1.el6_6.noarch 이상 지원이 가능하기 때문에, 아래 명령으로 확인 후 필요시 ca-certificates 를 업데이트 해주시기 바랍니다.

rpm -q ca-certificates
yum list installed | grep ca-certificates

Ubuntu 버전 상관없이 아래 명령으로 패키지내에 DigiCert Global Root G2 인증서가 있는걸 확인 가능합니다.

dpkg -L ca-certificates | grep “DigiCert_Global_Root_G2.crt”
/usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G2.crt


루트 인증서 설치 및 확인
https://www.digicert.com/kb/digicert-root-certificates.htm
에서 DigiCert Global Root G2 인증서를 다운받아

아래 게시물 참고 하여 JRE폴더에 설치해주시면됩니다.
https://connect2id.com/blog/importing-ca-root-cert-into-jvm-trust-store

정상 설치 확인은 프로그램에서 API 호출하는 방식과 동일하게 아래 주소를 GET방식으로 호출하시고 OK응답오면 정상 설치된 것입니다.

https://test-kapi.kakao.com/test-ca-certificates

(설치후에도 여전히 안된다면, JRE폴더가 다른곳에 있는 경우니 찾아서 추가로 설치하시면됩니다.)

local에서 테스트 하려면 어떻게 해야 할까요?
java버전 변경은 어렵습니다.

os 윈도우 입니다.

로컬 테스트 및 윈도우 계열도 동일하게 루트인증서 설치해주시면됩니다.

루트 인증서 설치 방법 (JAVA API호출 환경)


로컬 테스트는 운영환경과 동일하게 낮은 버전의 Java 설치하셔서 API호출 시, "PKIX path building failed"에러 발생하는 것 확인하시고

위 링크의 내용대로 루트 인증서 설치하셔서 API정상 호출 되는지 체크 해보시면됩니다.