Post

免费SSL证书全攻略:使用Let's Encrypt自动化配置Nginx/Apache并设置自动续期

2026-04-24

概述

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 任务管理,实现高效运维。

相关来源