При настройке сертификата SSL для кластера Elasticsearch вам необходимо перезапустить службу Elasticsearch, чтобы конфигурация вступила в силу. Во время перезапуска службы Elasticsearch появляется сообщение о том, что конфигурацию сертификата SSL не удалось импортировать.
failed to load SSL configuration [xpack.security.http.ssl] - cannot read configured [jks] keystore (as a truststore)
failed to load SSL configuration [xpack.security.http.ssl] - cannot read configured [jks] keystore (as a truststore)
Указывает, что Elasticsearch не может прочитать Java, настроенную вами при загрузке конфигурации SSL. Файл хранилища ключей (JKS). Возможные причины включают неверный путь к файлу, формат файла или проблемы с настройками разрешений.
1. Проверьте конфигурацию хранилища ключей и хранилища доверенных сертификатов.
В файле конфигурации Elasticsearch elasticsearch.yml проверьте настройки, связанные с SSL:
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: "/path/to/your/keystore.jks"
xpack.security.http.ssl.keystore.password: "keystore_password"
xpack.security.http.ssl.truststore.path: "/path/to/your/truststore.jks"
xpack.security.http.ssl.truststore.password: "truststore_password"
Что нужно проверить:
Разрешения можно проверить с помощью следующей команды:
ls -l /path/to/your/keystore.jks
Разрешения можно изменить с помощью следующей команды:
sudo chmod 644 /path/to/your/keystore.jks
sudo chown elasticsearch:elasticsearch /path/to/your/keystore.jks
Elasticsearch поддерживает несколько форматов файлов сертификатов SSL, включая JKS (Java KeyStore), PKCS#12 (файл .p12) и файлы сертификатов формата PEM.
Если вы используете формат JKS, убедитесь, что сертификат и закрытый ключ правильно импортированы в файл JKS. Если формат файла сертификата неправильный, Elasticsearch не сможет загрузить конфигурацию SSL.
Если вам нужно создать новый файл JKS или преобразовать существующий сертификат в JKS, мы можем использовать инструменты keytool или OpenSSL для этого.
keytool -genkey -alias mycert -keystore keystore.jks -keyalg RSA -keysize 2048 -validity 3650
openssl pkcs12 -export -in certificate.pem -inkey privatekey.pem -out keystore.p12 -name "myalias"
keytool -importkeystore -srckeystore keystore.p12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks
PKCS#12 — более современный формат сертификата, который рекомендуется использовать чаще, чем JKS. Мы можем использовать файлы .p12 напрямую, без преобразования в JKS.
Измените файл конфигурации Elasticsearch elasticsearch.yml, чтобы использовать сертификат формата .p12:
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: "/path/to/your/keystore.p12"
xpack.security.http.ssl.keystore.password: "keystore_password"
xpack.security.http.ssl.truststore.path: "/path/to/your/keystore.p12" # Тот же файл p12 можно использовать как truststore
xpack.security.http.ssl.truststore.password: "keystore_password"
Если вы используете файл JKS, вы можете просмотреть сертификат с помощью keytool:
keytool -list -v -keystore /path/to/your/keystore.jks
Убедитесь, что он содержит действительную запись сертификата и закрытый ключ. Если сертификат импортирован неправильно или поврежден, нам необходимо восстановить или импортировать сертификат.
Убедитесь, что в разделе конфигурации SSL файла конфигурации нет других конфликтов или отсутствующих элементов конфигурации:
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: "/path/to/your/keystore.jks"
xpack.security.http.ssl.keystore.password: "keystore_password"
xpack.security.http.ssl.truststore.path: "/path/to/your/truststore.jks"
xpack.security.http.ssl.truststore.password: "truststore_password"
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: "/path/to/your/keystore.jks"
xpack.security.transport.ssl.keystore.password: "keystore_password"
xpack.security.transport.ssl.truststore.path: "/path/to/your/truststore.jks"
xpack.security.transport.ssl.truststore.password: "truststore_password"
После завершения настройки перезапустите Elasticsearch, чтобы новая конфигурация сертификата SSL вступила в силу.
./bin/elasticsearch -d -p pid
О том, как правильно сгенерировать SSL Сертификат,Вы можете обратиться к моей статьеhttps://cloud.tencent.com/developer/article/2457640