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

Kibana Dev Tools调用Elasticsearch报证书过期错误排查求助

排查Kibana Dev Tools访问Elasticsearch报证书过期的其他检查点

问题背景

在Kubernetes集群用Helm部署Elasticsearch和Kibana多年,一直靠Kibana Dev Tools查询ES数据,最近所有查询都报错:

{"statusCode":502,"error":"Bad Gateway","message":"certificate has expired"}

但用curl或浏览器直接访问ES的URL和接口都正常,调用ES的/_ssl/certificates接口查看证书,显示有效期还有一年左右,状态没问题。

补充信息:/_ssl/certificates接口输出

$ curl -k -u elastic:*** "https://localhost:9200/_ssl/certificates?pretty"

[
  {
    "path" : "/usr/share/elasticsearch/config/certs/tls.crt",
    "format" : "PEM",
    "alias" : null,
    "subject_dn" : "CN=***, O=***, L=***, ST=***, C=***",
    "serial_number" : "***",
    "has_private_key" : true,
    "expiry" : "2024-01-19T23:59:59.000Z"
  },
  {
    "path" : "/usr/share/elasticsearch/config/certs/tls.crt",
    "format" : "PEM",
    "alias" : null,
    "subject_dn" : "CN=***, O=***, L=***, ST=***, C=***",
    "serial_number" : "***",
    "has_private_key" : false,
    "expiry" : "2024-01-19T23:59:59.000Z"
  },
  {
    "path" : "/usr/share/elasticsearch/config/certs/tls.crt",
    "format" : "PEM",
    "alias" : null,
    "subject_dn" : "CN=DigiCert TLS RSA SHA256 2020 CA1, O=DigiCert Inc, C=US",
    "serial_number" : "***",
    "has_private_key" : false,
    "expiry" : "2031-04-13T23:59:59.000Z"
  },
  {
    "path" : "/usr/share/elasticsearch/config/certs/tls.crt",
    "format" : "PEM",
    "alias" : null,
    "subject_dn" : "CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US",
    "serial_number" : "***",
    "has_private_key" : false,
    "expiry" : "2031-11-10T00:00:00.000Z"
  }
]

注:敏感信息已替换为***

其他需要检查的证书环节

  • Kibana本地证书配置

    • 登录Kibana Pod,查看/usr/share/kibana/config/certs/下的CA证书,执行openssl x509 -in <证书文件名> -text -noout确认有效期。
    • 核对Kibana配置里的elasticsearch.ssl.certificateAuthorities项,确保指向的证书和ES端一致,且未过期。
    • 检查Kibana是否配置了完整的证书链,尤其是使用自签证书时,要包含中间CA和根CA。
  • K8s集群层面的证书

    • 如果Kibana通过Ingress访问,查询对应Ingress的TLS证书:先执行kubectl get ingress <kibana-ingress名> -o yaml找到关联的secret,再用kubectl get secret <secret名> -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -text -noout查看有效期。
    • 若Kibana通过外部地址访问ES,检查ES对应的Ingress或LoadBalancer证书,步骤同上。
    • 集群使用Istio等服务网格的话,检查网格中ES和Kibana通信所用的证书是否过期。
  • 缓存与旧证书残留

    • 直接重启Kibana Pod,清除Pod内可能缓存的旧证书,确保加载最新配置。
    • 检查Kibana所在节点的系统级证书缓存,清理后重启Kibana。
    • 用helm get values <ES/Kibana的Helm发布名>查看Helm配置,确认证书相关参数是否更新,有没有旧证书文件未替换。
  • 证书链完整性验证

    • 在Kibana Pod内执行curl -u elastic:<密码> https://<ES服务名>:9200(不要加-k跳过验证),查看具体报错信息,定位是哪个环节的证书问题。
    • 用openssl s_client -connect <ES地址>:9200查看返回的证书链,确认所有中间证书都在有效期内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:03:08