Skip to content

Certbot Nginx 快速配置 Let's Encrypt SSL 证书

日常服务器部署网站时,HTTPS 已是必备配置。本文基于 CentOS 系统,使用官方推荐 Certbot 工具,一键自动签发、配置、强制跳转 HTTPS,适配 Nginx 环境,证书免费、自动续期,开箱即用。

一、环境前置要求

  1. 域名已完成 DNS 解析指向当前服务器
  2. 服务器安全组/防火墙放行 80443 端口
  3. 服务器已正常安装并运行 Nginx
  4. 提前配置好域名 80 端口 HTTP 站点

二、安装 Certbot 与 Nginx 插件

CentOS 7

bash
sudo yum install -y cert python2-certbot-nginx

CentOS 8 / CentOS Stream / Rocky Linux

bash
sudo dnf install -y certbot python3-certbot-nginx

三、配置 Nginx 基础 HTTP 站点

以域名 oss.hunji.xyz 为例,先配置纯 80 端口代理站点,Certbot 依赖 80 端口完成域名验证:

nginx
server {
    listen 80;
    server_name oss.hunji.xyz;

    client_max_body_size 10m;

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

校验配置并重载 Nginx:

bash
sudo nginx -t
sudo systemctl reload nginx

四、一键自动签发 SSL 证书

执行以下命令,自动完成域名验证、证书签发、Nginx 配置修改、HTTP 强制跳转:

bash
sudo certbot --nginx -d oss.hunji.xyz

交互流程说明

  1. 填写接收到期提醒的邮箱
  2. 输入 A 同意服务条款
  3. 按需选择是否订阅推送邮件
  4. 自动完成验证并写入 SSL 配置

多域名批量申请示例:

bash
sudo certbot --nginx -d oss.hunji.xyz -d wxapi.hunji.xyz

五、Certbot 自动生成的 Nginx 最终配置

执行成功后,工具会自动改写配置,无需手动修改:

nginx
# HTTP 自动 301 跳转 HTTPS
server {
    listen 80;
    server_name oss.hunji.xyz;
    return 301 https://$host$request_uri;
}

# HTTPS 证书配置
server {
    listen 443 ssl;
    server_name oss.hunji.xyz;

    ssl_certificate /etc/letsencrypt/live/oss.hunji.xyz/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/oss.hunji.xyz/privkey.pem;

    client_max_body_size 10m;

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

再次校验配置并重启服务:

bash
sudo nginx -t
sudo systemctl restart nginx

六、证书自动续期(生产必备)

Let's Encrypt 证书有效期仅 90 天,Certbot 默认内置定时任务,自动续期。

手动测试续期是否正常:

bash
sudo certbot renew --dry-run

输出 Congratulations 代表续期服务正常可用。

七、核心文件路径

手动备份或自定义配置时,证书默认存放路径:

  • 完整证书:/etc/letsencrypt/live/域名/fullchain.pem
  • 私钥文件:/etc/letsencrypt/live/域名/privkey.pem

八、常见问题修复

错误:nginx plugin does not appear to be installed

缺少 Nginx 适配插件,执行对应安装命令:

bash
# CentOS 7
sudo yum install -y certbot-nginx

# CentOS 8+
sudo dnf install -y python3-certbot-nginx

安装完成后,重新执行证书申请命令即可。

最近更新