Post
Let's Encrypt证书申请与Nginx配置实战
使用 Let’s Encrypt 为 Nginx 配置免费 SSL 证书
概述
本文详细说明如何通过 Let’s Encrypt 为 Nginx 服务器申请免费 SSL 证书,涵盖证书申请流程、Nginx 配置方法、自动续期策略及常见问题处理。重点在于通过命令行操作实现安全的 HTTPS 部署,并提供可复用的自动续期脚本模板。
证书申请流程
准备工作
-
安装依赖工具
确保系统已安装 Git 和 Python(建议 2.7 以上版本):git --version # 检查 Git 是否安装 yum install git # 若未安装则通过包管理器安装 python -V # 验证 Python 版本 -
克隆 Let’s Encrypt 客户端
从 GitHub 获取官方客户端:git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt
证书生成方式
方法一:自动交互式申请
./letsencrypt-auto
执行后按提示操作:
- 输入邮箱地址(用于续期通知)
- 选择
A(申请证书) - 选择
Y(接受条款) - 输入域名(支持多域名,用空格或逗号分隔)
方法二:非交互式申请
./letsencrypt-auto certonly --standalone \
--email your_email@example.com \
-d example.com -d www.example.com
注意:
--standalone模式需确保 80 端口未被占用。
Nginx 配置 SSL 证书
证书文件说明
生成的证书文件位于 /etc/letsencrypt/live/your_domain/,关键文件包括:
fullchain.pem:Nginx 需要的完整证书链privkey.pem:私钥文件
配置 Nginx 服务器块
在 Nginx 配置文件中(通常位于 /etc/nginx/sites-available/),添加以下内容:
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# 其他 HTTPS 配置...
}
若已有配置,确保路径正确,避免残留旧配置。
证书续期策略
手动续期命令
./letsencrypt-auto certonly --renew-by-default \
--email your_email@example.com \
-d example.com -d www.example.com
自动续期脚本
创建脚本文件(如 /opt/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 /opt/renewCerts.sh
crontab -e
# 添加以下行,每月凌晨 1 点执行
0 0 1 * * /bin/sh /opt/renewCerts.sh
常见问题与注意事项
1. 证书有效期与续期限制
- Let’s Encrypt 证书有效期为 90 天,需手动或自动续期。
- 每周申请次数有限,频繁删除证书重新申请可能导致限流。
2. 国内服务器配置问题
- 放行 443 端口:国内云服务器(如阿里云)需在安全组中开放 443 端口,否则证书申请会失败。
- 重启服务:配置完成后需重启 Nginx 和防火墙服务。
3. 证书删除与重新申请
Let’s Encrypt 不支持直接删除域名,需手动清理旧证书:
rm -rf /etc/letsencrypt/live/www.example.com/
rm -rf /etc/letsencrypt/archive/www.example.com/
rm /etc/letsencrypt/renewal/www.example.com.conf
重新申请时可使用 --webroot 模式:
letsencrypt certonly --webroot -w /var/www/example \
-d example.com -d www.example.com
4. Nginx 配置残留问题
删除证书后,若 Nginx 配置文件未更新,可能导致服务异常。需检查并修改配置文件路径。
总结
通过 Let’s Encrypt 为 Nginx 配置 SSL 证书是实现 HTTPS 的低成本方案,但需注意证书续期和服务器配置细节。本文提供的命令和脚本可直接用于生产环境,但需根据实际服务器环境调整路径和权限。对于多域名场景,建议使用自动化工具(如 Certbot)简化操作流程。