安装系统依赖项 #
sudo apt update
sudo apt install python3 python3-dev python3-venv libaugeas-dev gcc
删除 Certbot-auto 和任何 Certbot 操作系统包 #
sudo apt-get remove certbot
设置 Python 虚拟环境 #
sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip
安装 Certbot #
sudo /opt/certbot/bin/pip install certbot
准备 Certbot 命令 #
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
安装正确的 DNS 插件 #
运行以下命令,将
sudo /opt/certbot/bin/pip install certbot-dns-<PLUGIN>
例如,如果您的 DNS 提供商是 Cloudflare,则您可以运行以下命令:
sudo /opt/certbot/bin/pip install certbot-dns-cloudflare
设置凭据 #
以 Cloudflare 插件为例,您需要一个包含 Cloudflare API 凭据的配置文件,可以从Cloudflare 仪表板获取。
Certbot 所需的令牌需要 Zone:DNS:Edit 权限, 仅针对您需要证书的区域。
使用受限 API 令牌的示例凭证文件(推荐):
# Cloudflare API token used by Certbot
dns_cloudflare_api_token = 0123456789abcdef0123456789abcdef01234567
您可以通过交互方式或使用命令行参数 --dns-cloudflare-credentials 提供此文件的路径 。Certbot 会记录此文件的路径以供续订时使用,但不会存储文件的内容。
另外需要限权凭证文件,否则您可能会看到相关警告。
获取证书 #
示例:
获取 example.com 的证书:
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
-d example.com
获取 example.com 和 www.example.com 的证书:
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
-d example.com \
-d www.example.com
获取 example.com 证书,等待60秒为 DNS 传播:
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
--dns-cloudflare-propagation-seconds 60 \
-d example.com
续订 #
测试续订:
sudo certbot renew --dry-run
指定要续订的证书名:
sudo certbot renew --cert-name example.com
--cert-name 参数可以通过运行 certbot certificates 得到。
沿用证书:
sudo certbot renew --reuse-key [--cert-name example.com]
注意:沿用证书可能会使安全性大大降低。
取消沿用证书:
sudo certbot renew --no-reuse-key [--cert-name example.com]
升级 Certbot #
插件以 Cloudflare 为例:
sudo /opt/certbot/bin/pip install --upgrade pip
sudo /opt/certbot/bin/pip install --upgrade certbot certbot-dns-cloudflare
如果此步骤导致错误,请运行 sudo rm -rf /opt/certbot 并重复所有安装流程。