200字
申请 Let’s Encrypt 免费证书
2025-12-31
2025-12-31

1. 安装必要软件

Ubuntu/Debian 系统:

bash

sudo apt update
sudo apt install certbot python3-certbot-nginx

CentOS/RHEL/Rocky Linux 系统:

bash

sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx

2. 配置 Nginx(确保域名已指向服务器)

确保你的 Nginx 配置中有正确的 server_name 指令:

nginx

server {
    listen 80;
    server_name example.com www.example.com;
    # 其他配置...
}

3. 申请证书(三种方法)

方法一:自动配置(推荐)

bash

sudo certbot --nginx -d www.example.com

Certbot 会自动:

  • 获取证书

  • 修改 Nginx 配置启用 HTTPS

  • 设置自动重定向 HTTP → HTTPS

方法二:仅获取证书(不修改配置)

bash

sudo certbot certonly --nginx -d example.com -d www.example.com

方法三:交互式申请

bash

sudo certbot --nginx

按照提示操作即可。

4. 验证证书状态

bash

# 查看证书列表
sudo certbot certificates

# 检查证书详细信息
sudo openssl x509 -in /etc/letsencrypt/live/example.com/fullchain.pem -text -noout

5. 测试 HTTPS 访问

访问 https://example.com,确认:

  • 证书有效(没有安全警告)

  • 网站正常加载

6. 自动续期设置

测试续期(不真正执行):

bash

sudo certbot renew --dry-run

自动续期配置:

证书自动续期已通过 systemd timer 或 cron 自动设置,通常位于:

bash

# 查看定时任务
systemctl list-timers | grep certbot
# 或
cat /etc/cron.d/certbot

7. 手动续期证书

bash

sudo certbot renew

8. 常用命令

bash

# 查看帮助
certbot --help

# 查看 certbot-nginx 插件帮助
certbot --help nginx

# 撤销证书
sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem

# 删除证书(删除配置)
sudo certbot delete --cert-name example.com

9. 证书文件位置

证书通常保存在:

text

/etc/letsencrypt/live/example.com/
├── cert.pem          # 证书
├── chain.pem         # 中间证书
├── fullchain.pem     # 完整证书链
└── privkey.pem       # 私钥(非常重要!)

10. 强制 HTTPS 配置示例

Certbot 会自动修改 Nginx 配置,通常会产生类似这样的配置:

nginx

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    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;
    
    # 其他配置...
}

注意事项

  1. 确保 80/443 端口开放

    bash

    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
  2. 域名解析必须正确:域名必须指向当前服务器的公网 IP

  3. 首次申请可能有限制:Let's Encrypt 有速率限制(每周 50 个证书/域名)

  4. 备份私钥:定期备份 /etc/letsencrypt/ 目录

  5. 多域名证书:可以一次性申请包含多个域名的证书:

    bash

    sudo certbot --nginx -d example.com -d www.example.com -d api.example.com

这样你就成功为 Nginx 配置了 Let's Encrypt SSL 证书,并且会自动续期,无需手动管理证书过期问题。

评论