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

如何将命令与Let's Encrypt证书续期结果关联并自动发邮件

自动化证书续期提醒邮件方案

第一步:编写证书有效期检查脚本

我给你整了个实用的bash脚本,核心就是用openssl提取证书过期日期,和当前日期算差值,判断要不要触发邮件提醒。你把下面的路径、邮箱换成自己的就行:

#!/bin/bash

# 替换成你的证书实际路径
CERT_PATH="/etc/ssl/certs/your_domain.crt"
# 主机服务商的收件邮箱
SUPPORT_EMAIL="support@your_hostprovider.com"
# 你的发件邮箱(后续要确保邮件工具能正常用这个地址发信)
FROM_EMAIL="your_email@your_domain.com"

# 提取证书过期日期并转成时间戳
EXPIRY_DATE=$(openssl x509 -enddate -noout -in $CERT_PATH | cut -d= -f2)
EXPIRY_TIMESTAMP=$(date -d "$EXPIRY_DATE" +%s)
# 当前时间戳
CURRENT_TIMESTAMP=$(date +%s)
# 计算剩余天数(秒转成天)
DAYS_LEFT=$(( ($EXPIRY_TIMESTAMP - $CURRENT_TIMESTAMP) / 86400 ))

# 当剩余天数≤7天时,发送提醒邮件
if [ $DAYS_LEFT -le 7 ]; then
    SUBJECT="紧急:请部署新SSL证书(剩余$DAYS_LEFT天过期)"
    BODY="您好,我的域名your_domain.com的SSL证书将在$DAYS_LEFT天后过期,请帮忙在后端部署已续期的证书。证书文件路径:$CERT_PATH\n\n谢谢!\n你的名字"
    
    # 用mailx发送邮件,不同系统参数可能略有调整,比如部分系统用-r指定发件人
    echo -e "$BODY" | mailx -s "$SUBJECT" -r "$FROM_EMAIL" "$SUPPORT_EMAIL"
fi

第二步:测试脚本并配置邮件发送

  1. 给脚本加执行权限:chmod +x check_cert_expiry.sh
  2. 手动运行脚本测试:./check_cert_expiry.sh,确认邮件能正常发送。如果发不出邮件,可能需要配置mailx/sendmail的SMTP信息——比如在/etc/mail.rc里添加你的邮箱服务商SMTP服务器、授权码等(比如用QQ邮箱的话,SMTP是smtp.qq.com,需要开启POP3/SMTP并获取授权码)。

第三步:用crontab设置定时自动运行

把脚本加到定时任务,每天跑一次,彻底解放双手:

  1. 编辑crontab:crontab -e
  2. 添加一行(比如每天凌晨2点自动执行,同时记录日志方便排查):
0 2 * * * /path/to/your/check_cert_expiry.sh >> /var/log/cert_check.log 2>&1

额外小贴士

  • 测试阶段可以把DAYS_LEFT -le 7改成DAYS_LEFT -le 30,提前验证邮件发送逻辑,没问题再改回7天。
  • 定期查看/var/log/cert_check.log,确保脚本一直正常运行,避免服务器配置变动导致脚本失效。
  • 证书续期后,脚本会自动检测到剩余天数增加,不会重复发邮件,直到下次临近过期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:32:35