Post
免费SSL证书全攻略:使用Let's Encrypt自动化配置Nginx/Apache并设置自动续期
概述
Let’s Encrypt 是一个提供免费 SSL/TLS 证书的开源项目,支持主流浏览器兼容,证书有效期为 90 天。本文详细说明如何通过 letsencrypt-auto 工具申请证书、配置 Nginx 服务器,并解决自动续期与常见部署问题。
使用方法
1. 环境准备
确保系统已安装以下依赖:
- Git:用于克隆 Let’s Encrypt 仓库
1git --version # 检查安装状态 2yum install git # 若未安装则通过包管理器安装 - Python:建议版本 2.7 及以上
1python -v
2. 获取证书
通过 letsencrypt-auto 工具生成证书:
1git clone https://github.com/letsencrypt/letsencrypt
2cd letsencrypt
3./letsencrypt-auto certonly --standalone --email your_email@example.com -d example.com -d www.example.com
或交互式选择:
1./letsencrypt-auto
2# 按提示输入邮箱、域名等信息
3. 配置 Nginx
证书生成后,文件位于 /etc/letsencrypt/live/example.com/,关键文件包括:
fullchain.pem:Nginx 需要的 SSL 证书privkey.pem:私钥文件
在 Nginx 配置文件中添加以下内容(以 HTTPS 443 端口为例):
1ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
2ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
4. 自动续期配置
证书需手动或通过 cron 定期续期:
1./letsencrypt-auto certonly --renew-by-default --email your_email@example.com -d example.com -d www.example.com
Cron 脚本示例(每月 1 日凌晨执行):
10 0 1 * * /bin/sh /opt/renewCerts.sh
脚本内容:
1#!/bin/sh
2if ! /opt/letsencrypt/letsencrypt-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; then
3 echo "续期失败"
4 cat /var/log/letsencrypt/renew.log
5 exit 1
6fi
确保脚本权限:
1chmod +x /opt/renewCerts.sh
常见问题与注意事项
1. 证书有效期与申请限制
- 90 天有效期:需定期续期,避免服务中断。
- 申请频率限制:每周每个域名仅允许申请一次,避免频繁删除重申请。
2. 国内服务器部署问题
- 443 端口放行:确保云服务商(如阿里云)已开放 443 端口,否则证书申请会失败。
- Nginx 配置残留:删除旧证书后,需手动清理 Nginx 配置文件残留项。
3. 证书删除与重新申请
Let’s Encrypt 不支持直接删除域名,需删除以下文件并重新申请:
1rm -rf /etc/letsencrypt/live/www.example.com/
2rm -rf /etc/letsencrypt/archive/www.example.com/
3rm /etc/letsencrypt/renewal/www.example.com.conf
4. Webroot 方式申请
若使用 Webroot 模式,需指定网站根目录:
1letsencrypt certonly --webroot -w /var/www/example -d example.com -d www.example.com
总结
Let’s Encrypt 提供了免费、自动化且安全的 SSL 证书解决方案,但需注意续期管理和部署细节。通过本文步骤,可快速完成证书申请、Nginx 配置及自动续期脚本设置,确保服务长期稳定运行。对于生产环境,建议结合 Nginx 配置优化与 Cron 任务管理,实现高效运维。