Skip to main content

SSL证书自动续期配置:让证书管理无忧

· 5 min read
OHTTPS

SSL证书自动续期是证书管理的最佳实践,可以避免证书过期导致的网站无法访问问题。本文将详细介绍如何配置SSL证书自动续期,包括OHTTPS、acme.sh、Certbot等工具的自动续期配置。

一、自动续期的重要性

1. 为什么需要自动续期

避免证书过期

  • 证书过期会导致网站无法访问
  • 需要紧急更新证书
  • 影响用户体验和业务

节省时间

  • 无需手动更新证书
  • 减少人工操作
  • 降低出错概率

保障安全

  • 确保证书始终有效
  • 避免安全风险
  • 保障业务连续性

2. 自动续期的优势

  • ✅ 证书到期前自动更新
  • ✅ 无需人工干预
  • ✅ 减少出错概率
  • ✅ 保障业务连续性

二、OHTTPS自动续期

1. 启用自动更新

  1. 登录OHTTPS平台
  2. 进入"证书管理"
  3. 找到要配置的证书
  4. 点击"配置"

2. 配置自动更新

更新设置

  • 启用"到期前自动更新"
  • 设置提前更新天数(推荐30天)
  • 选择更新后操作

部署设置

  • 启用"更新后自动部署"
  • 选择部署节点
  • 配置部署参数

3. 通知设置

更新通知

  • 启用"更新后通知"
  • 设置通知邮箱
  • 选择通知方式

三、acme.sh自动续期

1. 自动续期机制

acme.sh安装后会自动创建cron任务,证书到期前30天自动续期。

查看cron任务

crontab -l | grep acme.sh

2. 手动触发续期

# 续期特定证书
~/.acme.sh/acme.sh --renew -d example.com

# 续期所有证书
~/.acme.sh/acme.sh --renew-all

# 强制续期
~/.acme.sh/acme.sh --renew -d example.com --force

3. 配置自动部署

# 安装证书时配置自动部署
~/.acme.sh/acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/key.pem \
--fullchain-file /etc/nginx/ssl/fullchain.pem \
--reloadcmd "systemctl reload nginx"

四、Certbot自动续期

1. 自动续期机制

Certbot安装后会自动创建systemd timer,证书到期前30天自动续期。

查看timer

sudo systemctl list-timers | grep certbot

2. 测试自动续期

# 测试自动续期(不实际续期)
sudo certbot renew --dry-run

3. 手动触发续期

# 续期所有证书
sudo certbot renew

# 强制续期特定证书
sudo certbot renew --cert-name example.com --force-renewal

4. 配置自动部署

编辑 /etc/letsencrypt/renewal/example.com.conf

[renewalparams]
renew_hook = systemctl reload nginx

五、自定义自动续期脚本

1. 创建续期脚本

创建 renew-cert.sh

#!/bin/bash

DOMAIN="example.com"
CERT_DIR="/etc/nginx/ssl"

# 检查证书是否需要续期
DAYS_LEFT=$(echo | openssl s_client -connect $DOMAIN:443 -servername $DOMAIN 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2 | xargs -I {} date -d {} +%s | awk '{print int(($1-systime())/86400)}')

if [ $DAYS_LEFT -lt 30 ]; then
# 续期证书
~/.acme.sh/acme.sh --renew -d $DOMAIN --force

# 部署证书
cp ~/.acme.sh/$DOMAIN/fullchain.cer $CERT_DIR/fullchain.pem
cp ~/.acme.sh/$DOMAIN/$DOMAIN.key $CERT_DIR/private.key

# 重启服务
systemctl reload nginx

# 发送通知
echo "证书已自动续期" | mail -s "SSL证书续期通知" admin@example.com
fi

2. 设置定时任务

# 添加到crontab
crontab -e

# 每天检查一次
0 2 * * * /path/to/renew-cert.sh

六、多服务器证书同步

1. 使用OHTTPS自动部署

  1. 在OHTTPS创建多个部署节点
  2. 配置自动部署
  3. 证书更新后自动部署到所有节点

2. 使用脚本同步

创建同步脚本 sync-cert.sh

#!/bin/bash

CERT_DIR="/etc/nginx/ssl"
SERVERS=("server1.example.com" "server2.example.com")

for SERVER in "${SERVERS[@]}"; do
# 复制证书到远程服务器
scp $CERT_DIR/*.pem $CERT_DIR/*.key user@$SERVER:/etc/nginx/ssl/

# 重启远程服务器Nginx
ssh user@$SERVER "systemctl reload nginx"
done

七、监控和告警

1. 续期成功通知

配置续期成功后的通知:

# 在续期脚本中添加
echo "证书续期成功" | mail -s "SSL证书续期成功" admin@example.com

2. 续期失败告警

配置续期失败后的告警:

# 检查续期是否成功
if [ $? -ne 0 ]; then
echo "证书续期失败,请手动处理!" | mail -s "SSL证书续期失败告警" admin@example.com
fi

3. 使用OHTTPS监控

  1. 在OHTTPS创建证书监控
  2. 设置到期提醒
  3. 监控证书状态

八、最佳实践

1. 续期配置

  • ✅ 设置提前30天续期
  • ✅ 配置自动部署
  • ✅ 设置通知和告警
  • ✅ 定期检查续期状态

2. 测试和验证

  • ✅ 定期测试自动续期
  • ✅ 验证续期后证书有效性
  • ✅ 检查部署是否成功
  • ✅ 确认服务正常运行

3. 备份和恢复

  • ✅ 定期备份证书和私钥
  • ✅ 记录续期配置
  • ✅ 准备应急恢复方案

九、常见问题

1. 续期失败

可能原因

  • DNS验证失败
  • HTTP验证失败
  • 网络问题

解决方法

  • 检查验证配置
  • 检查网络连接
  • 手动触发续期

2. 部署失败

可能原因

  • 文件权限问题
  • 服务重启失败
  • 配置错误

解决方法

  • 检查文件权限
  • 检查服务状态
  • 验证配置文件

3. 通知未收到

问题:续期成功但未收到通知

解决方法

  • 检查邮箱配置
  • 检查垃圾邮件
  • 验证通知设置

十、总结

SSL证书自动续期是证书管理的最佳实践,可以避免证书过期问题,保障业务连续性。通过配置自动续期,可以大大减少人工操作,降低出错概率。

关键要点

  • ✅ 使用OHTTPS自动续期(推荐)
  • ✅ 配置acme.sh或Certbot自动续期
  • ✅ 设置自动部署
  • ✅ 配置监控和告警

如果您需要配置SSL证书自动续期,推荐使用OHTTPS平台,它提供了完整的自动续期和自动部署功能,让证书管理变得简单高效。

OHTTPS: 免费HTTPS证书/SSL证书申请 • 自动化更新、部署、监控
OHTTPS 支持通过多种域名验证方式(DNS验证、HTTP验证、文件验证等)申请免费的HTTPS证书/SSL证书,包括单域名证书、多域名证书、通配符证书、IP证书等,支持HTTPS证书/SSL证书的自动化更新、自动化部署、自动化监控及告警等,并支持将HTTPS证书/SSL证书自动化部署至阿里云、腾讯云、群晖NAS、百度云、七牛云、多吉云、又拍云、宝塔面板、Docker容器、SSH等,实现HTTPS证书/SSL证书的一站式申请、更新、部署、监控和管理。