兰 亭 墨 苑
期货 · 量化 · AI · 终身学习
首页
归档
编辑文章
标题 *
URL 别名 *
内容 *
(支持 Markdown 格式)
# Certbot 配合 Nginx 申请证书,是目前最官方、最傻瓜化的方案 使用 **Certbot** 配合 Nginx 申请证书,是目前最**官方、最傻瓜化**的方案。 与 `acme.sh` 相比,Certbot 最大的特点是**自动化程度极高**。它不仅能申请证书,甚至能直接帮你修改 Nginx 的配置文件,自动配置好 HTTPS 和 301 跳转。 以下是基于 Ubuntu/Debian 系统的标准操作流程(CentOS 类似): --- ### 第一步:安装 Certbot Certbot 是基于 Python 开发的,官方推荐使用 `snap` 安装以获取最新版,但使用系统自带的包管理器(apt/yum)通常更方便且够用。 ```bash # 更新软件源 sudo apt update # 安装核心组件和 Nginx 插件 sudo apt install certbot python3-certbot-nginx ``` --- ### 第二步:一键申请并配置 (`--nginx`) 确保你的 Nginx 已经在运行,且配置了 `server_name` 指向你的域名(例如 `api.yuangs.cc`)。 运行这条命令,它会自动读取你的 Nginx 配置: ```bash sudo certbot --nginx ``` **接下来会进入交互式界面,Certbot 会问你几个问题:** 1. **输入邮箱**:用于接收证书过期提醒(必填)。 2. **同意协议**:输入 `A` (Agree)。 3. **分享邮箱**:输入 `N` (No,除非你想收广告)。 4. **选择域名**:它会列出从 Nginx 配置里读到的所有域名。 * 输入数字选择(例如输入 `1` 或直接回车全选)。 5. **是否开启强制 HTTPS 跳转? (Redirect)** * `1: No redirect` - 不修改,只开启 HTTPS。 * `2: Redirect` - **推荐选这个**。Certbot 会自动在 Nginx 里插入一段 301 跳转代码,让 HTTP 自动跳到 HTTPS。 --- ### 第三步:发生了什么?(底层解析) 等你看到 "Congratulations!" 时,HTTPS 已经配置好了。Certbot 在后台默默做了两件大事: #### 1. 证书存放 证书被存放在了 `/etc/letsencrypt/live/你的域名/` 目录下: * `fullchain.pem`: 完整证书链(对应 Nginx 的 `ssl_certificate`)。 * `privkey.pem`: 私钥(对应 Nginx 的 `ssl_certificate_key`)。 #### 2. Nginx 配置被修改 (Magic) 打开你的 Nginx 配置文件,你会发现它被 Certbot **“魔改”**了。 * **原来的 `server` 块**:被插入了 `ssl_certificate` 等路径,以及 `listen 443 ssl`。 * **新增的 `server` 块**(如果你选了 Redirect):Certbot 会自动增加一个监听 80 端口的块,专门负责把流量重定向到 HTTPS。 你会看到类似这样的注释,标志着这是 Certbot 自动管理的: ```nginx ssl_certificate /etc/letsencrypt/live/api.yuangs.cc/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/api.yuangs.cc/privkey.pem; # managed by Certbot ``` --- ### 第四步:自动续期测试 Certbot 安装时会自动在系统里添加一个定时任务(systemd timer 或 cron)。你不需要手动写脚本。 你可以运行这个命令来测试自动续期机制是否正常: ```bash sudo certbot renew --dry-run ``` 如果输出 "Congratulations, all renewals succeeded",说明自动续期没问题。 --- ### 💡 Certbot vs acme.sh:怎么选? 既然你两个都了解了,这里给一个**最终选择建议**: | 特性 | **Certbot** (官方推荐) | **acme.sh** (极客首选) | | :--- | :--- | :--- | | **依赖** | 较重 (Python) | **极轻** (纯 Shell) | | **配置 Nginx** | **自动修改** (省事,但会改乱格式) | **不修改** (安全,需要手动配置) | | **侵入性** | 强 (接管 Nginx 配置) | 弱 (只提供证书文件) | | **DNS API** | 需要额外安装插件 | **内置** 支持几百种 DNS 商 | | **适用人群** | **新手、运维** (求快,不想写配置) | **开发者、极客** (求稳,想完全掌控) | **我的建议:** * 如果你不熟悉 Nginx 配置,怕写错,用 **Certbot**。 * 如果你有洁癖,不喜欢工具乱改你的 Nginx 配置文件,或者你的环境不能装 Python,用 **acme.sh**。
配图 (可多选)
选择新图片文件或拖拽到此处
标签
更新文章
删除文章