SSL证书 2026年10月19日 阅读约8分钟

SSL证书自动续期
再也不用担心证书过期

一次配置,系统永久管理 — 不再为深夜网站显示"不安全"而烦恼。

SSL证书自动续期设置

为什么SSL证书会意外过期

SSL证书有固定的有效期 — 商业证书目前最长398天(约13个月),Let's Encrypt为90天。尽管如此,仍有许多网站主遭遇证书意外过期,原因包括:

结果是:网站显示"您的连接不是私密连接",红色警告页面让访客望而却步,业务立即受损。

行业数据:根据Venafi(2022年)的报告,超过80%的证书相关中断是由计划外的证书过期引起的 — 而这些完全可以通过正确配置自动续期来预防。

Let's Encrypt + Certbot自动续期

Let's Encrypt是全球最受欢迎的免费CA,颁发90天有效期证书。Certbot是IETF推荐的客户端,完全支持自动续期。

安装Certbot

# Ubuntu/Debian
sudo apt update
sudo apt install certbot python3-certbot-nginx -y

# 通过snap安装(推荐)
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

申请首张证书

# Nginx服务器
sudo certbot --nginx -d example.com -d www.example.com

# Apache服务器
sudo certbot --apache -d example.com -d www.example.com

# 独立模式(无Web服务器)
sudo certbot certonly --standalone -d example.com

测试自动续期

# 干运行测试 — 模拟续期但不获取真实证书
sudo certbot renew --dry-run

# 成功输出:"Congratulations, all simulated renewals succeeded"

Certbot会自动安装systemd定时器或cron任务,每12小时运行一次,对剩余天数不足30天的证书进行续期。

DirectAdmin Auto-SSL(虚拟主机)

如果您使用基于DirectAdmin的虚拟主机(如AsiaGB虚拟主机),SSL管理极为简便 — DirectAdmin内置Auto-SSL功能。

在DirectAdmin中启用Auto-SSL

  1. 登录您的DirectAdmin控制面板
  2. 进入 高级功能 → SSL证书
  3. 选择 来自Let's Encrypt的免费自动证书
  4. 勾选 强制SSL并重定向至https
  5. 点击 保存

AsiaGB虚拟主机:所有正确指向服务器的域名默认开启Auto-SSL,无需额外配置,证书每60天自动续期一次。

命令行检查SSL状态

# 查看当前证书到期日期
echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates

VPS上设置Cron Job自动续期

在自管理的VPS上,即使Certbot已安装定时器,额外添加cron任务可提供双重保障。

# 打开root crontab编辑器
sudo crontab -e

# 添加以下行(每天凌晨3:30运行)
30 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx" 2>&1 | logger -t certbot-renew

关键参数说明

参数作用
--quiet无异常时不输出日志
--post-hook续期成功后执行命令(重载nginx)
logger -t certbot-renew将输出写入syslog以便后续检查

通配符证书与DNS验证

申请通配符SSL(*.example.com)时,需使用DNS验证代替HTTP验证:

# 通过DNS验证申请通配符证书
sudo certbot certonly --manual --preferred-challenges dns \
  -d "*.example.com" -d "example.com"

# 自动续期使用DNS插件(如Cloudflare)
sudo certbot certonly --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/cloudflare.ini \
  -d "*.example.com"

SSL到期监控与提醒

即使配置了自动续期,独立的外部监控也能确保您在出现问题时第一时间知晓。

命令行检查到期日期

# 查看到期日期
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
  | openssl x509 -noout -enddate

# 示例输出: notAfter=Jan 17 12:00:00 2027 GMT

自动化提醒脚本

#!/bin/bash
# ssl-check.sh — 每日通过cron运行,剩余不足30天时发送邮件提醒
DOMAIN="example.com"
DAYS_WARN=30
ALERT_EMAIL="[email protected]"

EXPIRY=$(echo | openssl s_client -servername $DOMAIN -connect $DOMAIN:443 2>/dev/null \
  | openssl x509 -noout -enddate | cut -d= -f2)
EXPIRY_EPOCH=$(date -d "$EXPIRY" +%s)
TODAY_EPOCH=$(date +%s)
DAYS_LEFT=$(( ($EXPIRY_EPOCH - $TODAY_EPOCH) / 86400 ))

if [ $DAYS_LEFT -lt $DAYS_WARN ]; then
  echo "SSL for $DOMAIN expires in $DAYS_LEFT days!" | \
    mail -s "SSL ALERT: $DOMAIN expires soon" $ALERT_EMAIL
fi

在线监控工具

工具主要功能价格
UptimeRobotSSL+可用性检测,邮件/短信提醒免费(基础版)
SSL Labs Monitor自动SSL评级检测免费
Freshping每分钟检测,Slack提醒免费50次检测
Zabbix/Grafana企业级全栈监控自托管免费

付费证书如RapidSSL、GeoTrust每次续期都需要重新进行域名验证,但可以实现半自动化:

商业SSL续期步骤

  1. 提前30-60天在服务器上生成新CSR
  2. 通过邮件、DNS TXT记录或文件上传验证域名
  3. 下载新证书并安装到服务器
  4. 重载Web服务器使新证书生效
# 生成新CSR
openssl req -new -newkey rsa:2048 -nodes \
  -keyout example.com.key \
  -out example.com.csr \
  -subj "/C=TH/ST=Bangkok/L=Bangkok/O=My Company/CN=example.com"

AsiaGB SSL价格(每年)

类型产品年费
DV SSLRapidSSL฿1,000
DV通配符RapidSSL Wildcard฿5,000
OV SSLGeoTrust True BusinessID฿4,000
EV SSLGeoTrust True BusinessID w/EV฿7,000

自动续期失败排查

常见错误:certbot renew失败

最常见原因:DNS A记录仍指向旧服务器IP,或防火墙封锁了Let's Encrypt HTTP验证所需的80端口。

# 查看certbot日志
sudo journalctl -u certbot -n 50
# 或
sudo cat /var/log/letsencrypt/letsencrypt.log | tail -50

# 验证80端口是否开放
sudo ss -tlnp | grep :80
curl -I http://example.com/.well-known/acme-challenge/test 2>&1 | head -5

常见问题与解决方法

问题原因解决方法
80端口连接被拒绝防火墙封锁或Web服务器停止开放80端口,启动Web服务器
请求过于频繁触发Let's Encrypt速率限制等待1小时,或用暂存服务器测试
DNS传播延迟DNS尚未更新等待24-48小时,或用dig验证
权限被拒绝Certbot缺少写入权限使用sudo运行或修复目录权限

防止SSL过期检查清单

对每个域名执行此检查清单,彻底杜绝证书过期:

检查项目验证方法状态
已启用自动续期certbot renew --dry-run✅ 必须
已配置Cron任务crontab -l | grep certbot✅ 必须
外部监控UptimeRobot或SSL提醒服务⚠️ 建议
提醒邮箱正确在CA/DirectAdmin处检查✅ 必须
80端口开放curl http://domain/.well-known/test✅ HTTP验证时必须
DNS指向正确dig +short A example.com✅ 必须

常见问题解答

SSL证书过期后网站会怎样?
浏览器会显示\"您的连接不是私密连接\"警告页面。访客无法在不忽略警告的情况下访问网站,Google也可能降低您的SEO排名。
Let's Encrypt真的会自动续期吗?
是的。Let's Encrypt证书有效期90天,但Certbot会通过cron job或systemd定时器每60-80天自动续期一次,首次设置后无需任何手动操作。
什么是DirectAdmin Auto-SSL?
DirectAdmin Auto-SSL是一个内置功能,使用Let's Encrypt自动为托管域名续期SSL证书,客户完全不需要手动操作。
应该提前多久设置SSL过期提醒?
建议在到期前30天和7天分别设置提醒,以便在自动续期因DNS变更或服务器配置错误而失败时有足够时间处理。
付费商业SSL证书能自动续期吗?
大多数付费SSL证书不支持完全自动续期,因为每次续期都需要重新进行域名验证。但如果CA支持ACME协议,可以通过Certbot插件实现自动下单和签发。
certbot renew --dry-run 有什么用?
它模拟续期流程而不实际获取证书,让您在实际续期日期前验证配置是否正确,确保自动续期到时能正常工作。

需要包含完整Auto-SSL的虚拟主机?

AsiaGB虚拟主机为每个域名提供DirectAdmin Auto-SSL,99%正常运行时间,SSD存储,立即可用。

查看主机套餐

更新:2026年10月19日 | 分类:SSL证书 | 什么是SSL通配符证书?→