一、LNMP 环境与 SSL 证书自动续期的必要性
在 LNMP(Linux + Nginx + MySQL + PHP)环境中,SSL 证书通常由 Let’s Encrypt 等机构签发,但其免费证书有效期仅为 3 个月。手动续期效率低下且易遗漏,可能导致服务中断。通过自动化工具实现续期,可显著提升运维效率和安全性。
二、使用 acme.sh 脚本实现自动续期
acme.sh 是轻量化的证书管理工具,支持与 LNMP 一键包无缝集成。操作步骤如下:
- 安装脚本:
curl https://gitcode.net/cert/cn-acme.sh/-/raw/master/install.sh | sh -s email=your@email.com
(脚本默认安装至/root/.acme.sh
) - 生成证书:通过 DNS API 验证域名所有权(以腾讯云为例):
export Tencent_SecretId="API_ID"
export Tencent_SecretKey="API_Key"
acme.sh --issue --dns dns_tencent -d example.com -d *.example.com - 设置自动任务:通过 Cron 每月执行续期检查:
0 0 * * * /root/.acme.sh/acme.sh --cron --home /root/.acme.sh
三、配置 LNMP 集成与证书自动加载
需修改 Nginx 配置文件以适配自动续期流程:
- 证书存储路径标准化:将证书文件统一存放于
/usr/local/nginx/ssl/
目录 - 添加证书重载指令:在续期脚本末尾追加
nginx -s reload
使新证书生效
参数 | 值 |
---|---|
ssl_certificate | /usr/local/nginx/ssl/fullchain.cer |
ssl_certificate_key | /usr/local/nginx/ssl/example.com.key |
四、验证与故障排除
可通过以下步骤验证自动化流程:
- 手动触发续期测试:
acme.sh --renew -d example.com --force
- 检查日志文件:
tail -f /var/log/acme_sh.log
- 常见错误处理:若出现 SSL 模块缺失,需重新编译 Nginx 并添加
--with-http_ssl_module
参数
结论:通过 acme.sh 与 Cron 任务结合,LNMP 环境可实现 SSL 证书全生命周期管理。建议定期检查日志文件,并通过 openssl x509 -dates -noout -in certificate.pem
验证证书有效期。