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

自托管Elasticsearch访问提示证书不受信任但已配置SSL证书如何解决

问题根因

你的判断正确,服务端SSL证书确实已经正常加载。出现证书不信任报错的核心原因是:当前Elasticsearch使用的是首次启动安全自动配置流程生成的私有自签名CA签发的证书,该CA根证书不在浏览器、操作系统、业务客户端的默认受信任根证书列表中,因此所有默认开启证书校验的访问端都会主动拦截请求,和证书本身是否加载成功无关。
额外注意:从你贴出的证书返回结果看,当前HTTP层使用的服务端证书(subject_dn为CN=05eeab4fdxxx)有效期到2024-06-26,如果当前日期已经超过该时间,即使完成信任配置也会报证书过期错误,需要先重新签发证书。

解决方案

根据使用场景可以选择临时调试方案或者永久正规方案。

方案1:临时调试快速处理(不推荐生产环境使用)

直接在客户端侧关闭证书校验逻辑,适合本地短时间调试:

  • 浏览器访问:Safari弹出证书不可信提示时,点击「显示详细信息」-「访问此网站」,输入系统密码确认将该证书加入本地信任列表即可;Chrome、Edge等浏览器可在报错页的高级选项中选择继续访问,同步信任证书即可。
  • 代码客户端调用:在客户端初始化配置中添加跳过证书校验的参数,例如Python Elasticsearch客户端初始化时传入verify_certs=False,Java客户端配置自定义SSLContext关闭证书校验即可。
    你当前使用Postman开启「允许无效证书」选项能正常访问,就是走的这个逻辑,本质是客户端主动放弃证书合法性校验。

方案2:永久解决(生产/长期使用推荐)

核心逻辑是让所有访问端信任Elasticsearch使用的CA根证书,或者替换为访问端默认信任的证书。

方式A:信任Elasticsearch自带的自签名CA

  1. 导出CA根证书
    登录Elasticsearch部署节点,进入ES配置目录(默认路径为安装目录下的config/certs/,包管理器安装的路径一般为/etc/elasticsearch/certs/),先执行命令获取http.p12证书库的密码:
    ./bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
    
    拿到密码后,用openssl从http.p12中导出CA根证书为PEM格式:
    openssl pkcs12 -in config/certs/http.p12 -nokeys -cacerts -out es_http_ca.crt
    
    导出得到的es_http_ca.crt就是需要被信任的根证书文件。
  2. 在访问端导入信任证书
    • Mac端(适配Safari、Chrome等使用系统证书存储的浏览器):双击导出的crt文件,自动打开钥匙串访问工具,找到导入的名为Elasticsearch security auto-configuration HTTP CA的证书,右键选择「显示简介」,打开「信任」分类,将「使用此证书时」选项修改为「始终信任」,输入系统密码保存后即可正常访问。
    • Windows端:双击crt文件选择「安装证书」,存储位置选择「本地计算机」,证书存储位置指定为「受信任的根证书颁发机构」,导入完成后重启浏览器即可生效。
    • 代码客户端:不要关闭证书校验,直接将导出的es_http_ca.crt作为CA根证书路径传入客户端配置即可,例如Python客户端传入参数ca_certs="./es_http_ca.crt",Java客户端可将证书导入JDK的cacerts信任库。

方式B:替换为自定义可信证书

如果你有内部私有CA,或者可以申请公共可信SSL证书,可以直接替换Elasticsearch的HTTP层证书,一劳永逸解决信任问题:

  1. 将证书私钥、服务端证书、CA链文件上传到Elasticsearch节点的certs目录下
  2. 修改elasticsearch.yml中的HTTP SSL配置,注释掉原有p12证书库的配置,替换为新的证书路径:
    xpack.security.http.ssl.enabled: true
    xpack.security.http.ssl.key: certs/your_access_domain.key
    xpack.security.http.ssl.certificate: certs/your_access_domain.crt
    xpack.security.http.ssl.certificate_authorities: certs/your_ca_chain.crt
    # 清空原有PKCS12证书库配置
    xpack.security.http.ssl.keystore.path: ""
    
  3. 重启Elasticsearch服务即可,注意确保证书的SAN扩展列表包含你实际访问用的域名/IP,否则会触发域名不匹配报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:09:18