主题
Certbot Nginx 快速配置 Let's Encrypt SSL 证书
日常服务器部署网站时,HTTPS 已是必备配置。本文基于 CentOS 系统,使用官方推荐 Certbot 工具,一键自动签发、配置、强制跳转 HTTPS,适配 Nginx 环境,证书免费、自动续期,开箱即用。
一、环境前置要求
- 域名已完成 DNS 解析指向当前服务器
- 服务器安全组/防火墙放行
80、443端口 - 服务器已正常安装并运行 Nginx
- 提前配置好域名 80 端口 HTTP 站点
二、安装 Certbot 与 Nginx 插件
CentOS 7
bash
sudo yum install -y cert python2-certbot-nginxCentOS 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交互流程说明
- 填写接收到期提醒的邮箱
- 输入
A同意服务条款 - 按需选择是否订阅推送邮件
- 自动完成验证并写入 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安装完成后,重新执行证书申请命令即可。