← 中文资源

简体中文版本

监控 TLS 证书到期时间

使用 blackbox_exporter 探测 TLS 端点,证书剩余 21 天或证书链校验失败时触发告警。

阅读英文原文

概述

证书过期是少数可以提前知道日期的故障。记录 probe_ssl_earliest_cert_expiry 的探针把到期日变成指标,一条简单表达式就能在用户察觉前告警。证书链校验同样重要:证书本身有效但缺少中间证书时,握手会直接失败,而不是给出到期预警。

步骤

  1. 定义严格校验的 HTTPS 探针模块,禁止跳过证书验证:
modules:
  https_2xx:
    prober: http
    timeout: 5s
    http:
      preferred_ip_protocol: ip4
      tls_config:
        insecure_skip_verify: false
  1. 在 Prometheus 中通过 relabel 把目标地址传给 blackbox_exporter,并探测公网主机名而非源站 IP,以便覆盖 DNS、SNI 和完整证书链。
  2. 配置两条告警:剩余 21 天为 warning,探测连续失败 5 分钟为 critical:
probe_ssl_earliest_cert_expiry - time() < 21 * 86400
probe_success{job="blackbox_tls"} == 0
  1. 用一个自签名或缺少中间证书的端点验证探针会返回 probe_success 0。

验证

预期正常端点返回 probe_success 1 和未来的到期时间戳,自签名端点返回 0 并附带链错误信息。到期告警应在证书剩余不足 21 天时触发,并带上主机名标签和续期 runbook 链接。

注意事项

  • 只监控清单中的端点,内部服务需要单独的目标列表。
  • 到期监控无法发现证书吊销或私钥泄露,需要配合其他控制。
  • 续期自动化本身也要监控,到期告警是兜底而不是主要信号。
  • 每季度复核目标清单,新增主机名未加探针就等于没有监控。