Post
Let's Encrypt SSL证书管理实战指南:从获取到自动续期
使用 Let’s Encrypt 部署免费 SSL 证书及自动续期方案
概述
本文详细说明如何通过 Let’s Encrypt 获取免费 SSL 证书、部署到 Nginx 服务器,并配置自动续期方案。重点涵盖证书申请流程、Nginx 配置要点、续期策略及常见部署陷阱。
核心概念
Let’s Encrypt 是由非营利组织 ISRG 运营的免费 SSL 证书服务,通过自动化工具实现证书申请、部署和续期。其证书有效期为 90 天,需用户主动续期以避免服务中断。
证书申请与部署流程
准备工作
-
安装依赖
确保系统已安装git和 Python 2.7+(部分旧版脚本依赖):git --version # 检查 git 是否安装 yum install git # CentOS 系统安装示例 python -V # 验证 Python 版本 -
获取 Let’s Encrypt 工具
通过 Git 克隆官方仓库:git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt
证书生成方法
方法一:交互式申请
./letsencrypt-auto
按提示输入邮箱地址、选择域名(支持多域名用空格分隔),完成验证后证书会生成在 /etc/letsencrypt/live/your_domain/ 目录。
方法二:命令行直接申请
./letsencrypt-auto certonly --standalone --email your_email@example.com -d your_domain -d www.your_domain
Nginx 配置 SSL 证书
生成的证书文件包含以下关键文件:
fullchain.pem:Nginx 需要的完整证书链privkey.pem:私钥文件
在 Nginx 配置文件中启用 HTTPS 服务:
server {
listen 443 ssl;
server_name your_domain;
ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
# 其他配置...
}
自动续期方案
手动续期命令
./letsencrypt-auto certonly --renew-by-default --email your_email@example.com -d your_domain -d www.your_domain
自动化脚本配置
创建续期脚本 renewCerts.sh:
#!/bin/sh
if ! /opt/letsencrypt/letsencrypt-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; then
echo "续期失败:"
cat /var/log/letsencrypt/renew.log
exit 1
fi
设置执行权限并配置 cron:
chmod +x renewCerts.sh
crontab -e
# 添加以下行,每月1日凌晨执行
0 0 1 * * /bin/sh /opt/renewCerts.sh
常见问题与注意事项
-
证书申请限制
- 每周申请次数有限(避免频繁删除重申请)
- 国内服务器需确保 443 端口对外可访问(如阿里云需手动放行)
-
Nginx 配置残留
删除旧证书时需彻底清理:rm -rf /etc/letsencrypt/live/www.example.com/ rm -rf /etc/letsencrypt/archive/www.example.com/ rm /etc/letsencrypt/renewal/www.example.com.conf -
证书续期失败排查
- 检查
renew.log日志文件 - 确保脚本路径与
letsencrypt-auto一致 - 避免在证书到期前 7 天内执行续期(续期窗口为到期前 30 天)
- 检查
总结
Let’s Encrypt 提供了免费且自动化程度高的 SSL 证书解决方案,但需用户主动管理续期流程。通过脚本化部署和 cron 定时任务,可有效降低运维成本。部署时需特别注意服务器端口开放策略和 Nginx 配置的准确性,避免因环境问题导致证书失效。