ElasticSearch curl: (60) SSL certification problem

 

1. 에러 내용

ElasticSearch 엔진 설치 이후, curl 명령어로 서버에 쿼리를 요청하면서 발생할 수 있는 에러입니다.

 

2. 원인

curl 명령어로 HTTPS 사이트에 접근할 때는 SSL 인증서를 체크하도록 되어 있습니다. 저희가 간단한 실습을 위해서 띄운 Elastic 서버는 인증 기관에서 공식적으로 인정받은 사이트가 아니라서, 자체적으로 갖고 있는 SSL 인증서는 신뢰 받지 못합니다.

 

따라서 단순 테스트 수준에서 Elastic 서버를 정상적으로 띄우려면 SSL 인증서 검사 기능을 해제하거나, 또는 HTTPS가 아닌 HTTP로 보안 연결 없이 서버를 열어두는 방법이 존재합니다.

 

 

3. 해결 방안

 

방법1: SSL 기능 해제

서버를 보안 연결 없이 운영하는 방법입니다. 안전하지는 않지만 여러 동작에 대한 제약이 줄어들어서, 저는 실습을 목적으로 할 때는 이 방법을 주로 사용합니다.

 

Elasticsearch 디렉토리 내, elasticsearch.yml 설정 파일에서 xpack.security.enabledfalse로 수정

$ cd $ES_HOME/config/elasticsearch.yml

# $ES_HOME이 환경변수로 등록되어 있지 않으면
$ cd [엘라스틱 디렉토리 경로]/config/elasticsearch.yml

 

설정을 저장하고 Elasticsearch를 재시작합니다.

$ elasticsearch -d

 

curl로 서버에 요청을 보내봅니다. 이 때, https가 아닌 http로 주소로 표기하는 것에 주의하세요.

$ curl http://localhost:9200

 

 

방법2: SSL 기능 유지

HTTPS로의 접속 방식은 유지하되, 인증서 검사만 건너 뛰는 방안입니다. 다만, 보안 연결인 만큼 인증이 아예 없을 수는 없고 Elasticsearch 서버의 관리자 계정비밀번호를 curl 명령어를 수행하면서 입력해주어야 합니다.

 

Default 관리자 계정은 elastic이며, 아직 비밀번호를 모르시는 분은 아래 링크에서 "비밀번호 설정" 항목을 참고해주세요.

https://citizen.tistory.com/35

 

이제 아래와 같이 curl 명령어를 테스트해봅니다.

$ curl -k -u [엘라스틱 계정] https://localhost:9200

 

방법2가 그나마 안전하지만 서버에 요청을 보낼때마다 비밀번호를 입력해야해서 다소 귀찮아지긴 합니다.

반응형