仅需申请一张多域名通配符证书,便可保护主域名以及下面的多个子域名。 使用 CloudFlare 作为 DNS provider,而提供 CloudFlare 的插件安装,开始阅读请先 确认 Certbot是否提供你需要的插件。
通配符域名证书申请与自动续费(Nginx,Debian 10)
之前曾经申请过主域名的证书,现在想要再添加通配符域名证书(*.yourinstance.com 格式的所有域名),或者第一次通过 Let’sEncrypt 与 Certbot 申请 SSL 证书,都可以参考这篇记录;系统配置与我不同的话,在 Certbot 页面 上输入您的配置,注意不同系统的命令差异。
欢迎提出用语或逻辑错误。
Table of Contents
一. 安装 snap
-
debian 可以直接用
apt install
下载软件包。非 root 用户要加上sudo
;如果您正在使用 root 用户,则不需要添加sudo
sudo apt update sudo apt install snapd
-
关闭 SSH 或退出登录,并再次登录,确保 snap 路径正常更新,之后安装
core
来得到最新版本的 snapdsudo snap install core sudo snap refresh core
测试看看:
sudo snap install hello-world # 是否输出:hello-world 6.3 from Canonical✓ installed hello-world # 是否输出:Hello World!
Debian 10 可能遇到的问题:
There is a known issue affecting some Debian 10 users with snaps that depend on browser-sandbox, such as Microsoft Teams. The issues can be bypassed with the following command:
sudo sysctl kernel unprivileged_userns_clone=1
二. 移除一切 Certbot 相关旧软件并安装新软件
-
根据你的系统任选其一将 certbot 删除:
# 1 sudo apt-get remove certbot # 2 sudo dnf remove certbot # 3 sudo yum remove certbot
-
通过 snap 安装 certbot
sudo snap install --classic certbot
- 确保 certbot 命令可执行
sudo ln -s /snap/bin/certbot /usr/bin/certbot
- 确保已安装的插件与 Certbot snap 具有相同容器
sudo snap set certbot trust-plugin-with-root=ok
- 安装 DNS 插件,
sudo snap install certbot-dns-<PLUGIN>
,如果你使用 CloudFlare,直接执行:
如果这里报错,再执行一遍步骤 4sudo snap install certbot-dns-cloudflare
三. 放置凭据
-
登录 CloudFlare,在主页面上找到 API keys;如果你的 cloudflare python module 版本大于等于 2.3.1,建议复制 restricted API Token,否则复制 Global API Key
-
设置 DNS 凭据
sudo mkdir -p /root/.secrets/ sudo touch /root/.secrets/cloudflare.ini # 添加/.secrets目录与cloudflare.ini文件 sudo chmod 0700 /root/.secrets/ sudo chmod 0400 /root/.secrets/cloudflare.ini # 指定权限 nano /root/.secrets/cloudflare.ini # 编辑cloudflare.ini文件
如果您使用 restricted API Token,按照下方格式编辑并变更 token 数值:
# Cloudflare API token used by Certbot dns_cloudflare_api_token = 0123456789abcdef0123456789abcdef01234567
如果您使用 Global API Key,按照下方格式编辑并变更 key 数值与 cloudflare 邮箱:
# Cloudflare API credentials used by Certbot dns_cloudflare_email = [email protected] dns_cloudflare_api_key = 0123456789abcdef0123456789abcdef01234
-
申请证书
certbot certonly \ --dns-cloudflare \ --dns-cloudflare-credentials ~/.secrets/cloudflare.ini \ -d example.com -d *.example.com
记得将 example.com 替换为您的域名,之后若您第一次申请,可能会要求您进行 TXT 验证,按照指示在 cloudflare 上操作即可;除此之外,您还应完成主域名的 A 记录验证
如果系统提示 Another instance of Certbot is already running,使用
ps -ef | grep certb
指令查看 ID,并杀死进程kill ID_number
四. 测试自动延期是否设置成功
```
sudo certbot renew --dry-run
```
没有报错的话证书申请与自动续期就配置完成啦,之后如果需要用主域名或者任一子域名配置代理(比如 nginx),将配置文件里需要证书 pem 路径的地方替换为生成的证书配置文件对应的路径就好了。
参考链接: