You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python客户端HTTPS连接GCP虚拟机上的Elasticsearch

如何通过Python客户端用外部IP以HTTPS连接GCP VM上的Elasticsearch?

可以实现,你遇到的错误核心是Elasticsearch自动生成的SSL证书中未包含VM的外部IP作为主题备用名称(SAN),导致客户端验证时主机名不匹配。以下是解决方法:

方法一:重新生成包含外部IP的SSL证书(推荐生产环境)

  1. 登录GCP VM,进入Elasticsearch的bin目录(默认路径为/usr/share/elasticsearch/bin)
  2. 使用官方证书工具生成包含外部IP的新证书:
    ./elasticsearch-certutil cert --name elasticsearch --dns elasticsearch,localhost --ip {vm_internal_ip},{vm_external_ip},127.0.0.1,::1
    
    替换{vm_internal_ip}和{vm_external_ip}为你的VM实际IP
  3. 生成的elastic-certificates.p12文件会保存在当前目录,备份原证书后将其复制到/elasticsearch/certs/目录下
  4. 重启Elasticsearch服务:
    sudo systemctl restart elasticsearch
    

方法二:调整Elasticsearch配置确保生效

修改elasticsearch.yml文件,确保SSL相关配置指向新证书:

network.host: 0.0.0.0
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.http.ssl.truststore.path: certs/elastic-certificates.p12

如果生成证书时设置了密码,需添加以下配置:

xpack.security.transport.ssl.keystore.password: {你的证书密码}
xpack.security.transport.ssl.truststore.password: {你的证书密码}

方法三:临时跳过证书验证(仅测试环境)

如果只是测试需求,可以在Python客户端中关闭证书验证(不推荐生产环境使用,存在安全风险):

from elasticsearch import Elasticsearch    
es_client = Elasticsearch('https://{vm_external_ip}:9200',
                          basic_auth=('elastic', {password}),
                          ca_certs=cert_path,
                          verify_certs=False)

完成上述操作后,即可通过外部IP以HTTPS方式连接GCP VM上的Elasticsearch。

内容的提问来源于stack exchange,提问作者Sasandra30

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:12:46