해당 글은 elasticsearch java rest client 를 실행하던 중
발생했던 오류를 해결하기 위해 작성했다
1. 문제
엘라스틱 자바 클라이언트를 작성하고 실행 시켰는데
아래와 같이 오류가 발생했다
javax.net.ssl.SSLHandshakeException: PKIX path validation
failed: java.security.cert.CertPathValidator
Exception: Path does not chain with any of the trust anchors
2. 원인
도커 컴포즈를 통해 원격 서버 (centOS) 에는 인증서를 받았는데
자바 클라이언트를 실행하는 로컬 환경에서는 해당 인증서가 없기에
인증서가 필요하다고 에러가 발생하는것이였다
3. 해결
로컬 (window)에 원하는 곳에 원격 서버 (centOS)에 있는 인증서를
복사해서 가져와 놓고 java에 keytool 을 이용해서 인증서를 등록하면 된다
1) FileZilla 를 이용해서 원격서버 인증서를 로컬로 들고오기
왼쪽 : 로컬
오른쪽 : 원격 서버

2) cmd 관리자 권한으로 시작

3) java 에 jdk 폴더에 lib 에 security 에 접근

4) 아래 양식으로 명령어 실행
keytool -import -alias "인증서 별칭" -keystore "클라이언트 keystore 경로" -file "로컬 인증서 위치"
C:\Program Files\Java\jdk-17\lib\security>keytool -import -alias es -keystore cacerts -file C:\certs\ca\ca.crt
// 클라이언트 keystore 경로는 이미 그 폴더 위치로 왔기에
// 폴더안에 cacerts 라는 파일을 경로로 가르킨다
// 만약 그렇지 않고 하려면 아래처럼 하면 된다
// C:\Program Files\Java\jdk-17\lib\security\cacerts
5) keystore password 를 쳐준다
default로 " changeit " 이다

6) trust this certificate? [no]: 뜨면 y 눌러준다

이 과정을 지나고 다시 돌려보면 정상적으로 돌아가는것을 확인 할 수 있다
'DataBase' 카테고리의 다른 글
| [DataBase] JPA @Transactional 없이 수동으로 처리 해보기 (0) | 2023.07.26 |
|---|---|
| [DataBase] Elasticsearch bulk 구현 (0) | 2023.07.21 |
| [DataBase] Elasticsearch + kibana + docker-compose (HTTPS 방식) (0) | 2023.07.06 |
| [DataBase] Elasticsearch + kibana + docker-compose (HTTP 방식) (0) | 2023.07.05 |
| [DataBase] Java를 이용한 Elasticsearch CRUD 구현하기 (0) | 2023.06.28 |