ELK발행일 2025. 7. 23.원본 https://blog.naver.com/jword_/223944281800 ↗

[ELK] 2.1 X-Pack Security 설정 및 오류 모음

[ELK] 2.1 X-Pack Security 설정 및 오류 모음 — #개발자의도구들 #ElasticSearch #xpack설정 #xpack오류 AI스쿨 msa기반 java 백엔드 코스 중에 공부한...

#DevOps/cloudOps#Naver Blog

#개발자의도구들 #ElasticSearch #xpack설정 #xpack오류

​

AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다

\* 현재 Spring x 프로젝트를 진행하고 있습니다. 전체 목차를 보시려면 여기를 눌러주세요.

\* Devops stack: 여기

\* 리눅스 기본기: 여기

Before

👉 2. ElasticSearch 연동하기

What is ?

Elasticsearch 클러스터를 보호하기 위해 사용되는 모듈이다.

​

다음 기능들을 수행한다.

text 코드 예제
                                    1. Authentication, Authorization
- username, pw로 유저를 식별하여 유저 role에 따라 데이터 베이스 통제권 부여

2. Encryption and Secure Communication
- TLS/SSL in Transport Layer

3. Auditing, Monitoring

...

보안 관련 기능들을 제공하는 모듈로 보면 됩니다.. 구체적으로 어떻게 하는지는 당장에 중요한건 아니기 때문에 어떻게 설정을 해야하는지만 보도록 하겠습니다.

Configuration

yaml 코드 예제
                                    xpack.security.enabled: true
# 👉 최신 버전에는 default로 true가 되어있다.

xpack.security.autoconfiguration.enabled: true
# 👉 자동으로 관련 보안 관련 설정들을 만들어줌

xpack.security.enrollment.enabled: false

​

SSL Setings

  • 기능 두번째꺼 관련 설정
yaml 코드 예제
                                    xpack.security.transport.ssl.enabled: true
# 👉 xpack security가 true인 경우 반드시 넣어줘야 함

xpack.security.transport.ssl.verification_mode: certificate
# 👉 Sets verification level

xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
# 👉 Path to keystore file

xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

trouble Shoot

1#

text 코드 예제
                                    ElasticsearchSecurityException:
 invalid configuration for xpack.security.transport.ssl
 - [xpack.security.transport.ssl.enabled] is not set,
but the following settings have been configured in elasticsearch.yml :
[xpack.security.transport.ssl.keystore.secure_password,xpack.security.transport.ssl.truststore.secure_password]"

🤔 원인

설정 파일에 아래 처럼 하나만 true

text 코드 예제
                                    xpack.security.enabled: true

👉 해결책

SSL 설정을 추가해주자

yaml 코드 예제
                                    xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

2#

​

3#

text 코드 예제
                                    [node-1] fatal exception while booting
Elasticsearchorg.elasticsearch.ElasticsearchSecurityException:
failed to load SSL configuration [xpack.security.transport.ssl]
 - cannot read configured [PKCS12] keystore (as a truststore)
 [/home/tod/elasticsearch/elastic-certificates.p12]

because access to read the file is blocked;
SSL resources should be placed in the [/home/tod/elasticsearch/config] directory

🤔 원인

elastic-certificates.p12의 올바르지 않은 경로

​

text 코드 예제
                                    🔍 elastic-certificates.p12는 무엇인가?

X-pack 보안 설정에서 사용되는 인증서 파일.
형식: PKCS#12(.p12)
 - 개인키, 인증서, 신뢰 체인을 하나의 암호화된 번들로 저장.
 - 이는 Java 기반 어플리케이션에서 keystore, truststore로 사용하기에 적합하다.

역할: 노드의 개인키, 연결 시 신원 증명
     CA 서명된 인증서: 보안 통신을 위한 신뢰 기반

🔍 Key store, Trust Stroe?
key store: 노드의 신원을 인증시 사용
trust store: 연결된 다른 노드나 클라이언트 인증서를 검증

elasitc-certificates.p12를 생성하는 방법

text 코드 예제
                                    # CA 생성
bin/elasticsearch-certutil ca --out elastic-stack-ca.p12
👉 파일 생성 후 비밀 번호를 잘 기억

# 인증서 생성
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --out elastic-certificates.p12

👉 이 생성된 인증서를 config/certs로 옮기기

​

설정 관련 파일들은 config내에 위치 시키는게 좋다. 밖으로 나가면 권한을 벗어나기 때문입니다.

저 같은 경우 해당 파일이 elastic search root 파일에 위치해 있어서 올바른 경로로 설정하였습니다.

​

​

​

👉 해결책

올바른 경로로 파일 이동

config/certs

​

3#

text 코드 예제
                                    [node-1] fatal exception while booting
Elasticsearchorg.elasticsearch.ElasticsearchSecurityException:
failed to load SSL configuration [xpack.security.transport.ssl]
- cannot read configured [PKCS12] keystore (as a truststore)
[/home/tod/elasticsearch/config/certs/elastic-certificates.p12]
- this is usually caused by an incorrect password; (a keystore password was provided)

🤔 원인: PKCS#12 파일이 생성되었으나 해당 파일의 실제 비밀번호가 keystore에 저장되지 않았기 때문입니다.

​

Elastic search는 keystore에서 모든 키들을 참고하기 때문에 꼭 내부에 작성해줘야 합니다.

​

👉 해결

text 코드 예제
                                    bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

실행 완료

이상으로 Elastic search를 실행하면서 발생한 문제는 없었습니다.

이미지

정상 실행 로그

​

​


​