如何利用现有证书安全连接自建Elasticsearch集群?
Elasticsearch自动生成证书角色及客户端安全连接指南
一、自动生成证书的明确角色
Elasticsearch自动生成的三个证书分工清晰:
http_ca.crt:CA根证书,是证书链的信任锚点,用于验证Elasticsearch服务端HTTPS证书的合法性,客户端必须使用它来信任服务端。http.p12:PKCS#12格式的服务端证书包,包含HTTP接口(REST API)的服务端证书和对应私钥,仅用于Elasticsearch自身对外提供HTTPS服务,属于服务端专属证书。transport.p12:集群节点间transport通信的专属证书,用于节点加密通信,和外部客户端连接无关,无需在客户端配置中使用。
二、当前配置的修正建议
你当前的xpack.security.transport.ssl配置使用了http.p12,这是错误的——transport层通信应对应使用transport.p12,正确配置应为:
xpack.security.transport.ssl: enabled: true keystore.path: certs/transport.p12
若要开启HTTP接口的TLS加密,需单独添加配置:
xpack.security.http.ssl: enabled: true keystore.path: certs/http.p12
三、客户端(如Jaeger)安全连接配置
默认情况下Elasticsearch的HTTP接口采用单向TLS(仅客户端验证服务端),无需客户端证书,只需让客户端信任服务端的CA根证书即可:
- 将服务器上的
http_ca.crt文件复制到客户端机器的指定路径(比如Jaeger部署节点的/opt/jaeger/certs/目录)。 - 在Jaeger的配置中指定该CA证书路径,以验证Elasticsearch服务端身份。示例配置:
es: server-urls: "https://<your-es-host>:9200" tls: ca: "/opt/jaeger/certs/http_ca.crt" username: "<your-es-username>" password: "<your-es-password>"
若你的Elasticsearch开启了双向TLS认证(强制验证客户端证书),则需要额外生成客户端证书并配置,但Elasticsearch默认未开启该模式,一般无需操作。
内容的提问来源于stack exchange,提问作者Mohamad Abbasi
相关产品推荐
相关产品推荐

