By accessing the website and accepting the Cookie Policy, you agree to use the cookies provided by the Site in accordance with to analyze traffic, remember your preferences, and optimize your experience.
安装 Certbot 申请 SSL 证书 - 解决宝塔面板申请 Let's Encrypt 证书时报错的问题
2022-07-15 14:49:11    49    0    0
emengweb

服务器中的安装宝塔面板,不知为何无法申请 Let's Encrypt 的免费 HTTPS 证书。只要我打开网站 SSL 配置中 Let's Encrypt 证书的申请界面,就会弹出 JSON 格式的报错信息。最后我手动用 Certbot 申请证书解决了这个问题,在此记录一下。

服务器系统:Ubuntu 20.04.3 LTS
宝塔面板:7.9.2
Nginx:1.20.1


宝塔自动申请 Let's Encrypt SSL 证书的错误提示

只要我在宝塔面板中打开申请 Let's Encrypt 证书的界面,就会弹出 JSON 格式的报错信息:

{
  "DvT0S_yhh1Y": "https://community.letsencrypt.org/t/adding-random-entries-to-the-directory/33417",
  "keyChange": "https://acme-v02.api.letsencrypt.org/acme/key-change",
  "meta": {
    "caaIdentities": [
      "letsencrypt.org"
    ],
    "termsOfService": "https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf",
    "website": "https://letsencrypt.org"
  },
  "newAccount": "https://acme-v02.api.letsencrypt.org/acme/new-acct",
  "newNonce": "https://acme-v02.api.letsencrypt.org/acme/new-nonce",
  "newOrder": "https://acme-v02.api.letsencrypt.org/acme/new-order",
  "revokeCert": "https://acme-v02.api.letsencrypt.org/acme/revoke-cert"
}

我在宝塔面板官方论坛寻觅一番后,基本没有发现遇到类似错误的用户,唯一一位同病相怜的用户在发帖后官方也没给出回答。看起来只好手动申请 Let's Encrypt 证书了。


使用 Certbot 申请 Let's Encrypt SSL 证书

安装 Certbot

进入 Let's Encrypt 的网站,看到 《快速入门》中推荐使用 Certbot

我们建议大多数具有命令行访问权限的人使用 Certbot ACME 客户端。它可以在不下线您的服务器的前提下自动执行证书颁发和安装。对于不需要自动配置的用户,Certbot 还提供专家模式。它易于使用,适用于许多操作系统,并且具有出色的文档。访问 Certbot 官网 以获取针对于操作系统和 Web 服务器的订制文档。

在网站引导安装一个叫 Snap 的包管理器,需要用 apt 手动安装一下,查找 snapd 并安装即可。之后使用snap安装certbot,并最终使用certbot来完成对证书的申请。

certbot-install.sh

# 查找 snapd 并安装,之后更新 snap 的源:
sudo apt install snapd -y
sudo snap install core; sudo snap refresh core
# 使用 snap 安装 certbot
sudo snap install --classic certbot
# 设置符号链接,将 certbot 链接到/usr/bin 下方便调用:
sudo ln -s /snap/bin/certbot /usr/bin/certbot

# 生成后的证书会暂存在 /etc/letsencrypt/live/ 目录下,可以按需取用

使用 Certbot 申请证书供宝塔面板使用

Certbot 是个全自动的工具,按照官网说法,如果使用 sudo certbot --nginx 就可以自动完成申请证书到写入 Nginx 配置文件的一条龙服务。不过我的 Nginx 配置文件和宝塔面板强相关,我还是打算只申请证书,不让 Certbot 自动修改我的 Nginx 配置文件了,免得它改出什么宝塔面板不兼容的 bug 来。

如果直接安装官方教程里的步骤,运行 sudo certbot certonly --nginx 会报错,因为宝塔面板的 Nginx 并不安装在默认路径下。所以运行时要额外注明一下 Nginx 的路径,使用 --nginx-server-root=/www/server/nginx/conf/

之后,Certbot 会自动检测到宝塔面板中用 Nginx 创建的网站与其绑定的域名,选择好按回车即可。证书申请完成后,在终端中会给出生成的证书(PEM 格式)与密钥(KEY)两个文件的路径,将内容复制出来即可。

certbot-bt.sh

sudo certbot certonly --nginx --nginx-server-root=/www/server/nginx/conf/

使用证书

将证书和私钥粘贴到宝塔面板的「其他证书」中,按保存按钮,即可完成配置。

image.png

保存后的证书也会出现在宝塔面板的证书夹中。

image.png


小技巧:申请单证书同时包含多个域名的方法

Certbot 申请证书时,常常会有需要一个证书同时申请多个域名的情况,可以在选择域名的界面,同时输入多个域名的编号,编号之间使用英文","进行分隔,即可将多个域名申请到同一个证书中去,十分方便。

image.png

上一篇: 手动引导启动netboot.xyz安装任意系统

下一篇: Virmach 日本东京等多区域大盘鸡 250G/500G/1T/2T/4T

49 人读过
文档导航