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의 인증서를 신뢰하지 못한다는 뜻이죠.
주요 원인은 크게 세 가지 라고 추측 했습니다.
- 자체 서명(Self-signed) 인증서 → JVM 기본 truststore에 없음
- 인증서 체인(중간 CA) 누락
- 접속 호스트명이 인증서 SAN에 포함되지 않음
3. 해결 과정
(1) 인증서에서 CA 추출
Elasticsearch가 사용하는 elastic-certificates.p12에서 CA를 뽑아내야 합니다.
openssl pkcs12 -in elastic-certificates.p12 -cacerts -nokeys -out http_ca.crt
비밀번호를 입력하면 http_ca.crt 파일이 생성됩니다.
이어서 진행 하던 중에, 프로그램 재시작 몇 번 했는데 갑자기 에러가 해결 됐습니다;
인증서 문제는 종종 이렇게 해결되곤 하네요.
728x90
'ES' 카테고리의 다른 글
Elasticsearch 데이터는 어떻게 저장되고 검색될까? (0) | 2025.09.19 |
---|---|
Elasticsearch 구조와 기본 용어 Cluster, Node, Index, Shard, Segment, Document, Field, Mapping (0) | 2025.09.18 |
Elasticsearch 역색인이란? Inverted Index (1) | 2025.09.17 |
Elasticsearch 비밀번호 변경 초기화 하는 법 (0) | 2025.09.17 |
Elasticsearch란? 개요와 ELK 스택 (0) | 2025.09.16 |
댓글