관리 메뉴

피터의 개발이야기

[Spring] SSL 접속시, PKIX path building failed 오류 해결방법 본문

Programming/Spring

[Spring] SSL 접속시, PKIX path building failed 오류 해결방법

기록하는 백앤드개발자 2024. 8. 12. 10:10
반응형

ㅁ 들어가며

ㅇ Elasticsearch와 연동하는 작업 중에 SSL 인증서 에러가 발생하였다. 

ㅇ 이를 분석하고 해결하는 과정을 글로 남긴다.

 

ㅁ 에러 내용

Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

ㅇ SSL 통신을 위해서는 인증서를 교환해야하지만, 인증서를 찾을 수 없다는 에러 메시지이다.

[Elasticsearch] Elasticsearch + Kibana 설치하기 with Docker에서 curl로 통신 테스트한 내용이다.

$ curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200

ㅇ 통신 테스트 성공 시 crt 인증서로 https 통신을 하였다.

ㅇ 해결책은 이 인증서를 java에게 인식하면 된다.

 

ㅁ 해결방법

Java keyStore의 위치 확인

# cacerts 저장소 위치 파악
$  file {java_home}/lib/security/cacerts
{java_home}/lib/security/cacerts: Java KeyStore

ㅇ Java keyStore의 위치를 파악한다.

ㅇ 나의 경우 {JAVA_HOME}/lib/security/cacerts에 위치하였다.

 

인증서 가져오기

# http_ca.crt 복사
$ docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .

 

keytool명령어로 인증서 추가

$ keytool -import -alias elasticsearch -keystore \
/Users/seodong-eok/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home/lib/security/cacerts -file http_ca.crt -storepass changeit

Owner: CN=Elasticsearch security auto-configuration HTTP CA
Issuer: CN=Elasticsearch security auto-configuration HTTP CA
Serial number: 1265a50eea06ec0c1f42cb9b53e166a71ed16b5d
Valid from: Thu Aug 01 15:31:40 KST 2024 until: Sun Aug 01 15:31:40 KST 2027
Certificate fingerprints:
	 SHA1: 7B:BA:B0:70:9A:A1:24:43:26:96:6F:6B:5D:B8:32:FB:96:2F:D7:77
	 SHA256: F1:8D:15:A7:BA:6F:3E:F2:19:14:EC:01:BB:74:69:4B:B3:6B:83:BE:0D:04:2E:4F:8B:34:C1:B9:A8:86:15:72
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 4096-bit RSA key
Version: 3
~~~~~~~~~~~~~~~~~
Trust this certificate? [no]:  yes
Certificate was added to keystore

 

ㅁ 함께 보면 좋은 사이트

javax.net.ssl.SSLHandshakeException
Java 기반에서 SSL 접속시, PKIX path building failed 오류 

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException

반응형
Comments