使用OpenSSL生成自签名证书启动Elasticsearch失败求助
问题排查与解决
错误提示明确指出:transport.p12这个truststore中没有任何可信证书条目,这是因为用OpenSSL生成PKCS12文件时,默认不会将-certfile指定的根CA证书标记为可信证书,而Elasticsearch读取truststore时需要明确的可信条目。
验证问题
先执行以下命令确认PKCS12文件的内容:
keytool -list -v -keystore /Users/mac/Documents/logging/elasticsearch/config/certs/transport.p12 -storetype pkcs12
输入文件密码后,查看输出中的Trusted Certificates部分,如果为空,就确认了问题所在。
修复步骤
1. 重新生成PKCS12文件
修改生成transport.p12的命令,添加-chain参数,让OpenSSL将根CA证书加入可信证书链:
openssl pkcs12 -export -out transport.p12 -inkey transport.key -in transport.crt -certfile rootCA.pem -chain
同样,elasticsearch.p12也建议用相同命令重新生成,避免后续HTTP SSL连接出现类似问题:
openssl pkcs12 -export -out elasticsearch.p12 -inkey elasticsearch.key -in elasticsearch.crt -certfile rootCA.pem -chain
生成时注意输入的密码要保持一致,Elasticsearch访问keystore和truststore(同一文件)需要相同密码。
2. 确认配置正确性
你的elasticsearch.yml配置本身没问题,transport的keystore和truststore共用一个PKCS12文件是允许的,只要文件包含密钥对和可信证书即可。
3. 权限检查
确保Elasticsearch进程对certs目录下的文件有读取权限:
chmod 644 /Users/mac/Documents/logging/elasticsearch/config/certs/*.p12 chown elasticsearch:elasticsearch /Users/mac/Documents/logging/elasticsearch/config/certs/ -R
(根据实际运行Elasticsearch的用户调整用户组)
重新启动Elasticsearch
完成上述步骤后,重新启动Elasticsearch,应该能正常加载SSL配置。
内容的提问来源于stack exchange,提问作者Jeffery
相关产品推荐
相关产品推荐

