所有部署指南 部署

SSL 证书监控:工具和配置指南

SSL 监控不仅仅是检查过期日期。完善的监控体系需要关注:即将过期的证书、配置变更、未授权的证书签发以及 SSL 错误导致的停机。

随着证书有效期在 2029 年缩短至 47 天,主动监控变得不可或缺——错过一次续签就会让你的网站下线。

需要监控什么

项目原因频率
证书过期过期证书 = 网站下线每天
证书链不完整的证书链 = 部分设备失败每周
TLS 版本旧 TLS 版本会被浏览器禁用每月
CT 日志检测为你域名未授权签发的证书持续
OCSP staplingStapling 失败会降低性能每周
HSTS 头缺少 HSTS = 容易受到降级攻击每月

免费监控方案

1. Cron 脚本(自托管)

#!/bin/bash
# /usr/local/bin/ssl-monitor.sh
DOMAINS="example.com www.example.com api.example.com"
WARN_DAYS=30
ALERT_EMAIL="admin@example.com"

for domain in $DOMAINS; do
  expiry=$(echo | openssl s_client -connect "$domain":443 -servername "$domain" 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2)

  if [ -z "$expiry" ]; then
    echo "ERROR: Can't connect to $domain:443" | mail -s "SSL Monitor: $domain unreachable" $ALERT_EMAIL
    continue
  fi

  expiry_epoch=$(date -d "$expiry" +%s 2>/dev/null)
  now_epoch=$(date +%s)
  days_left=$(( (expiry_epoch - now_epoch) / 86400 ))

  if [ "$days_left" -lt "$WARN_DAYS" ]; then
    echo "$domain certificate expires in $days_left days ($expiry)" | mail -s "SSL Expiry Warning: $domain" $ALERT_EMAIL
  fi
done
# Add to crontab — run daily at 9am
0 9 * * * /usr/local/bin/ssl-monitor.sh

2. UptimeRobot(SaaS — 免费版)

  1. UptimeRobot 注册
  2. 添加监控 → 类型:HTTPS
  3. 输入你的域名 URL
  4. 设置 SSL 过期告警:过期前 30 天
  5. 配置告警:邮件、Slack、Webhook

UptimeRobot 每 5 分钟检查一次,对停机和证书过期都会告警。

3. Certificate Transparency 监控

监控 CT 日志 中为你域名未授权签发的证书:

服务方式费用
Cert Spotter (SSLMate)新证书邮件告警免费版
crt.sh手动搜索免费
Facebook CT MonitorFacebook 的监控工具免费

付费监控工具

工具功能价格
Better UptimeSSL + 可用性 + 事件管理免费版 / $20+/月
Datadog完整基础设施监控含 SSL 检查$15+/主机/月
PingdomSSL + 可用性 + 性能$10+/月
StatusCakeSSL 监控 + 告警免费版 / $20+/月

完整监控配置示例

对于生产站点,组合多个层次:

Layer 1: Certbot auto-renewal (prevents expiry)
Layer 2: Cron script (catches renewal failures — daily email)
Layer 3: UptimeRobot (catches SSL errors — 5-min checks)
Layer 4: CT monitoring (catches unauthorized certs — continuous)

这提供了纵深防御——没有单点故障。

配合 GetHTTPS 的监控

GetHTTPS 不包含内置监控(它是证书签发工具)。但你的工作流应该是:

  1. 用 GetHTTPS 签发证书
  2. 设置续签提醒 — 日历提醒在第 60 天(共 90 天)
  3. 添加 SSL 监控 — cron 脚本或 SaaS 工具作为备份
  4. 考虑 Certbot 用于生产环境的自动续签

常见问题

最低限度应该有什么监控?

至少:证书续签的日历提醒(90 天中的第 60 天)加上自动检查(cron 脚本或 UptimeRobot)。日历提醒处理正常续签;自动检查捕获失败情况。

如何监控多个域名?

上面的 cron 脚本在循环中处理多个域名。SaaS 工具如 UptimeRobot 让你添加多个监控——每个域名一个。

应该监控暂存/开发环境的证书吗?

如果它们是会过期的 Let’s Encrypt 证书,是的。过期的暂存证书会阻塞 QA 和开发。至少设置日历提醒。

如何监控证书链,而不仅是过期?

SSL Labs API 提供自动化的证书链验证。快速手动检查:

echo | openssl s_client -connect example.com:443 2>/dev/null | grep "Verify return code"

将此添加到你的 cron 脚本中进行证书链监控。

相关文章

部署 2026-05-07
如何检查 SSL 证书过期时间
使用浏览器、OpenSSL 或在线工具检查 SSL 证书的过期时间。设置监控以避免意外过期和服务中断。
SSL 与证书 2026-05-08
证书透明度:如何监控你域名的证书签发情况
证书透明度(CT)日志记录了每一张公开签发的 SSL 证书。了解 CT 的工作原理、如何监控你的域名是否有未授权证书,以及如何使用 crt.sh。
SSL 与证书 2026-05-07
SSL 证书有效期:47 天变更详解
CA/Browser Forum 投票决定到 2029 年将 SSL 证书有效期缩短至 47 天。了解时间线、对你网站的影响,以及如何准备。
快速开始 2026-05-07
如何续签 Let's Encrypt 证书
Let's Encrypt 证书每 90 天过期。了解如何通过 GetHTTPS(手动)或 Certbot(自动)续签,并为 47 天有效期做好准备。
在浏览器中获取免费 SSL 证书
无需安装,无需账号。私钥始终留在你的设备上。
获取证书