阿里云送的20张免费额度证书,原先有效期是一年的,但随着政策的改变,一年有效期变成三个月了,所以继续使用就没有必要了,可以安装 Certbot 来签发证书,并自动续期。

官方文档

1、检查你的 DNS 提供商是否受支持

通过查看 文档 中的列表,查看 Certbot 是否支持您的 DNS 提供商

2、通过 SSH 连接到服务器

以具有 sudo 权限的用户身份通过 SSH 连接到运行 HTTP 网站的服务器

3、安装 snapd

您需要安装 snapd 并确保按照任何说明启用经典 snap 支持

按照 snapcraft 网站上的这些说明安装 snapd

3.1、在 Debian 10 (Buster)Debian 9 (Stretch) 上,snap 可以直接从命令行安装

1
2
sudo apt update
sudo apt install snapd

3.2、注销并重新登录,或重新启动系统,以确保 snap 的路径正确更新

1
reboot

3.3、重新连接服务器之后,安装 snap 以获取最新的 .core snapd

1
sudo snap install core

输出以下信息代表安装成功

1
core 16-2.45.2 from Canonical✓ installed

3.4、要测试您的系统,请安装 hello-world snap 并确保它正常运行

  • 安装
1
sudo snap install hello-world
  • 验证
1
hello-world

输出以下信息代表安装成功

1
Hello World!
  • 验证成功之后卸载
1
sudo snap remove hello-world

4、删除 certbot-auto 和任何 Certbot OS 软件包

1
sudo apt-get remove certbot

5、安装 Certbot

1
sudo snap install --classic certbot

6、准备 Certbot 命令

在机器的命令行上执行以下指令设置软链接,确保 certbot 命令可以运行

1
sudo ln -s /snap/bin/certbot /usr/bin/certbot

7、确认插件包含级别

在计算机上的命令行上运行此命令,以确认已安装的插件将具有与 Certbot snap 相同的包含。classic

1
sudo snap set certbot trust-plugin-with-root=ok

8、安装正确的 DNS 插件

如果您的 DNS 提供商是 Cloudflare,您需运行以下命令

1
sudo snap install certbot-dns-cloudflare

9、设置 DNS 凭据

使用此插件需要一个包含 Cloudflare API 凭证的配置文件,该文件可从您的 Cloudflare 仪表板获取

以前,Cloudflare全局 API 密钥 用于身份验证,但是此密钥可以访问您帐户中所有域的整个 Cloudflare API,这意味着如果泄露,它可能会造成很大的损害

Cloudflare 较新的 API 令牌可以限制为特定的域和操作,因此现在是推荐的身份验证选项

Certbot 所需的令牌仅需要您需要证书的区域的权限 Zone:DNS:Edit

  • root 用户文件夹下建一个 ~/.secrets/certbot/cloudflare.ini 文件
1
mkdir -p ~/.secrets/certbot
1
touch ~/.secrets/certbot/cloudflare.ini
1
vim ~/.secrets/certbot/cloudflare.ini
  • 使用受限 API 令牌的示例凭证文件(推荐)
1
2
# Cloudflare API token used by Certbot
dns_cloudflare_api_token = hu3tMEMQmz6Ao8r-PmqVcxHtHmGjjneXjXQYga0O
  • 设置令牌文件权限
1
chmod 600 ~/.secrets/certbot/cloudflare.ini

600 权限意味着只有文件的所有者才具有对它的完全读写访问权限。一旦文件权限设置为 600,其他任何人都无法访问该文件。不设置的话,获证书的时候 Certbot 会红色错误提示。

10、运行 DNS 提供商说明的示例部分中的命令获取证书

1
certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini -d test.ysbzcn.com --email 'email@ysbzcn.com'

参数详解:
certbot certonly 若要仅获取证书而不将其安装在任何位置,可以使用(“仅证书”)命令。
–dns-cloudflare-credentials Cloudflare credentials INI 文件。(必填)
-d 指定域名
–register-unsafely-without-email 不加这行命令会报错,加了就不会再有强制输入邮箱的提示,官方不推荐这样做。

11、测试自动续费

系统上的 Certbot 软件包附带一个 cron 作业或 systemd 计时器,它们将在证书过期之前自动续订证书。除非您更改配置,否则您无需再次运行 Certbot。您可以通过运行以下命令来测试证书的自动续订

1
sudo certbot renew --dry-run

12、确认 Certbot 工作正常

要确认您的网站设置正确,请在浏览器中访问并在 URL 栏中查找锁定图标