在为Elasticsearch集群配置SSL证书中,需要重启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在加载SSL配置时无法读取你配置的Java Keystore(JKS)文件,可能的原因包括文件路径、文件格式不正确,或者权限设置问题。
1. 检查keystore和truststore配置
在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
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。