본문 바로가기
ES

Elasticsearch SSLHandshakeException: PKIX path building failed 해결

by 비타민찌 2025. 9. 16.
728x90

Elasticsearch를 Docker Compose로 띄우고

Java 애플리케이션에서 연결을 시도하는 과정에서 에러를 맞닥뜨렸습니다.

 

 

에러 메시지:

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

 

처음에는 단순히 SSL 인증서 문제겠지 정도로 생각했는데, 막상 해결하려고 보니 몇 가지 함정이 숨어 있었습니다.

이번 글에서는 제가 겪은 상황과 해결 방법을 정리해 보겠습니다.

 

 

1. 환경 구성

  • Elasticsearch 버전: 7.17.0 (Docker Compose로 실행)
  • 설정: elastic-certificates.p12 기반 TLS 적용
  • 애플리케이션: Java(Spring) → Elasticsearch HTTPS 연결 시도

 

Compose 설정 일부:

volumes:
  - ./elasticsearch_config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  - ./elasticsearch_config/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12

 

 

 

2. 에러 원인 분석

에러 메시지의 핵심은 unable to find valid certification path 입니다.
클라이언트(JVM)가 Elasticsearch의 인증서를 신뢰하지 못한다는 뜻이죠.

주요 원인은 크게 세 가지 라고 추측 했습니다.

  1. 자체 서명(Self-signed) 인증서 → JVM 기본 truststore에 없음
  2. 인증서 체인(중간 CA) 누락
  3. 접속 호스트명이 인증서 SAN에 포함되지 않음

 

3. 해결 과정

(1) 인증서에서 CA 추출

Elasticsearch가 사용하는 elastic-certificates.p12에서 CA를 뽑아내야 합니다.

openssl pkcs12 -in elastic-certificates.p12 -cacerts -nokeys -out http_ca.crt
 
 

비밀번호를 입력하면 http_ca.crt 파일이 생성됩니다.

 

 

이어서 진행 하던 중에, 프로그램 재시작 몇 번 했는데 갑자기 에러가 해결 됐습니다;

인증서 문제는 종종 이렇게 해결되곤 하네요.

 

 

 

https://blog.naver.com/ghdalswl77/222996246061

728x90

댓글