关于安装和配置 Certbun 以与 Apache 一起使用的更多信息 关于安装和配置 Certbun 以与 Apache 一起使用的更多信息

关于安装和配置 Certbun 以与 Apache 一起使用的更多信息

网站绿色猪肉包标志

没错,我是Porkbun的粉丝。他们的界面是我用过最好的,而且价格要么很棒要么至少很合理。他们是我们社区里比较受欢迎的域名注册商之一。——raindog308


你好!

最近,我们刊登了 Porkbun 的 Eddie Barksdale 撰写的一篇精彩客座文章。Eddie的文章讲解了如何安装Certbun,它是 Porkbun 提供的Certbot 的替代方案。

Certbun 和 Certbot 都是 Python 脚本,用于安装Let's Encrypt证书,使我们的网站能够建立安全的 HTTPS 连接。主要区别在于,Certbot 会在安装证书时直接从 Let's Encrypt 获取证书,而 Certbun 则直接从 Porkbun 下载之前由 Porkbun 从 Let's Encrypt 获取的证书。由于 Certbun 需要执行的操作比 Certbot 少,因此速度更快,而且可能更不容易出现问题。

很明显,我和 @raindog308 都非常喜欢Porkbun 出色的技术支持。Porkbun 的技术支持是使用 Certbun 的一大优势。如果遇到任何不尽如人意的地方,只需给 Porkbun 支持团队发一封邮件,他们就能迅速解决问题。

Eddie 的文章详细介绍了 Certbun 的安装和使用步骤。我想按照 Eddie 的说明尝试 Certbun 时,首先阅读了Certbun 脚本。然后,我需要确定 Apache 测试服务器文件系统中的安全证书应该安装在哪个位置。我需要将证书位置添加到 Certbun 的 config.json 文件中,从而为 Certbun 提供证书的存放位置。

过去,我通常使用 Apache Web 服务器搭配 Certbot。由于我的使用场景比较简单,所以一直不需要更改 Apache 或 Certbot 的默认配置。因此,我一直不知道 Apache 需要将证书放在哪里,因为 Certbot 似乎已经知道了。

所以,在我第一次安装 Certbot 时,我花了一些时间研究 Apache 的配置文档。然后我突然想到一个有趣的主意:我用 Certbot 来安装它的证书。接下来,我查看了 Certbot 对测试服务器的 /etc 目录和 Apache 配置文件所做的更改。

Certbot 创建了 /etc/letsencrypt 文件并安装了证书:

root@chi-sm2028tp-htr-4-1:/etc/letsencrypt# ls live/lowend.lol/
cert.pem chain.pem fullchain.pem privkey.pem README
root@chi-sm2028tp-htr-4-1:/etc/letsencrypt# ls -l live/lowend.lol/
total 12
lrwxrwxrwx 1 root root 34 Aug 11 22:24 cert.pem -> ../../archive/lowend.lol/cert2.pem
lrwxrwxrwx 1 root root 35 Aug 11 22:24 chain.pem -> ../../archive/lowend.lol/chain2.pem
lrwxrwxrwx 1 root root 39 Aug 11 22:24 fullchain.pem -> ../../archive/lowend.lol/fullchain2.pem
lrwxrwxrwx 1 root root 37 Aug 11 22:24 privkey.pem -> ../../archive/lowend.lol/privkey2.pem
-rw-r--r-- 1 root root 692 Aug 11 22:18 README
root@chi-sm2028tp-htr-4-1:/etc/letsencrypt#

有趣的是,那些“有效”的“证书”实际上是指向“已存档”证书的符号链接。

接下来,我创建了 /etc/certbun、/etc/certbun/live 和 /etc/certbun/live/lowend.lol 目录,以便 Certbun 可以使用它们。

我已将 Certbun 的 config.json 文件配置为使用与 Certbot 类似的格式。以下是我的 Certbun config.json 文件:

root@chi-sm2028tp-htr-4-1:~/certbun# cat config.json
{ "endpoint":"https://porkbun.com/api/json/v3",
"apikey": "pk1_c3016cef0e5a74339ea332d102fe09230d72ca832ff90512d0889d556b82a116",
"secretapikey": "sk1_9473hbfjokw49ngmcigd0wh39g7hld6lej9kwfkwhyvdwlsufgstshodjsgkslki",
"domain": "lowend.lol",
"domainCertLocation": "/etc/certbun/live/lowend.lol/domain.cert.pem",
"privateKeyLocation": "/etc/certbun/live/lowend.lol/private.key.pem",
"intermediateCertLocation": "/etc/certbun/live/lowend.lol/intermediate.cert.pem",
"publicKeyLocation": "/etc/certbun/live/lowend.lol/public.key.pem",
"commandToReloadWebserver": "systemctl restart apache2"
}

以下是我在 Apache 2 配置中所做的更改,目的是将证书从 Certbot 切换到 Certbun 证书:

root@chi-sm2028tp-htr-4-1:/etc/apache2/sites-available# cat -n 000-default-le-ssl.conf | tail
30
31
32 ServerName lowend.lol
33 Include /etc/letsencrypt/options-ssl-apache.conf
34 # SSLCertificateFile /etc/letsencrypt/live/lowend.lol/fullchain.pem
35 SSLCertificateFile /etc/certbun/live/lowend.lol/domain.cert.pem
36 # SSLCertificateKeyFile /etc/letsencrypt/live/lowend.lol/privkey.pem
37 SSLCertificateKeyFile /etc/certbun/live/lowend.lol/private.key.pem
38
39
root@chi-sm2028tp-htr-4-1:/etc/apache2/sites-available#

然后,运行 Certbun 从 Porkbun 下载证书并重启 Apache。以下是 /etc/certbun/live 中的 Certbun 证书(尚无符号链接和归档文件):

root@chi-sm2028tp-htr-4-1:/etc/certbun# ls -l live/lowend.lol/
total 20
-rw-r--r-- 1 root root 5945 Aug 11 23:25 domain.cert.pem
-rw-r--r-- 1 root root 1826 Aug 11 23:25 intermediate.cert.pem
-rw------- 1 root root 3272 Aug 11 23:25 private.key.pem
-rw-r--r-- 1 root root 800 Aug 11 23:25 public.key.pem
root@chi-sm2028tp-htr-4-1:/etc/certbun#

成功安装并运行 Certbot 和 Certbun 后,我利用一个虽小但很有趣的技巧,实现了证书之间的切换。切换证书似乎只需要交换配置文件中两行的注释哈希值,然后重启 Apache 即可。请参阅 /etc/apache2/sites-available/000-default-le-ssl.conf 文件的第 34、35、36 和 37 行。

如下面的屏幕截图所示,Chrome 浏览器似乎很乐​​意接受 Certbot 和 Certbun 证书的默认 Certbot / Let's Encrypt 选项,而无需进行任何更改。

在使用 Certbun 证书时,我本可以注释掉或修改 000-default-le-ssl.conf 文件的第 33 行,但我没有这样做。因此,我仍然有机会深入研究 /etc/letsencrypt/options-ssl-apache.conf 文件。事实上,我承认我对 /etc/letsencrypt/options-ssl-apache.conf 文件中一些 Certbot/Let's Encrypt 的默认设置感到好奇。

完整的 /etc/letsencrypt/options-ssl-apache.conf 文件如下所示,作为本文的最后一部分。因此,本文与 Eddie 的文章一起,应该包含了在默认配置下使用 Certbot 和 Apache 所需的一切,而无需事先安装和运行 Certbot。

以下是 Chrome 浏览器接受 Let's Encrypt 通过 Certbot 于 8 月 11 日颁发的证书的截图:

证书详情签发日期:8月11日

以下是 Chrome 浏览器于 8 月 11 日接受 Certbun 新下载的证书的截图,该证书此前由 Porkbun 于 8 月 9 日从 Let's Encrypt 获取:

证书签发日期:8月9日

特价优惠

再次感谢GTHost提供用于本次测试的服务器。再次感谢Porkbun和 Eddie Barksdale 提供的Certbun 服务。再次感谢Phillip和 Porkbun 的整个支持团队,你们真是太棒了!

GTHost 提供了一个优惠码,首月购买任何 GTHost 服务器均可享受 30% 的折扣,有效期至 2022 年 9 月 30 日。优惠码:LET22-30

正在寻找新的域名?访问Porkbun并使用优惠码 LOWENDBOX22,即可享受新域名注册立减 1 美元的优惠,新老客户均可使用!

Certbot Apache 默认配置位于 /etc/letsencrypt/

root@chi-sm2028tp-htr-4-1:~# cat -n /etc/letsencrypt/options-ssl-apache.conf
1 # This file contains important security parameters. If you modify this file
2 # manually, Certbot will be unable to automatically provide future security
3 # updates. Instead, Certbot will print and log an error message with a path to
4 # the up-to-date file that you will need to refer to when manually updating
5 # this file.
6
7 SSLEngine on
8
9 # Intermediate configuration, tweak to your needs
10 SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
11 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
12 SSLHonorCipherOrder off
13 SSLSessionTickets off
14
15 SSLOptions +StrictRequire
16
17 # Add vhost name to log entries:
18 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" vhost_combined
19 LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
root@chi-sm2028tp-htr-4-1:~#