Apacheで使用するためのCertbunのインストールと設定の詳細

本当です。私はPorkbunのファンです。今まで出会った中で最も使いやすいインターフェースで、価格も素晴らしい、あるいは少なくともリーズナブルです。私たちのコミュニティで最も人気のあるレジストラの一つです。 –raindog308
こんにちは!
先日、PorkbunのEddie Barksdale氏による素晴らしいゲスト投稿を特集しました。Eddie氏の投稿では、 Certbotの代替となるPorkbunのインストール方法が解説されています。
CertbunとCertbotはどちらも、ウェブサイトが安全なHTTPS接続を利用できるようにするLet's Encrypt証明書をインストールするPythonスクリプトです。大きな違いは、Certbotは証明書のインストール時にLet's Encryptから証明書を取得するのに対し、CertbunはPorkbunがLet's Encryptから取得した証明書をPorkbunからダウンロードする点です。CertbunはCertbotよりも処理量が少ないため、Certbunの方が高速で、トラブル発生率も低いと考えられます。
@raindog308 と私はPorkbunの素晴らしいサポートの大ファンです。PorkbunのサポートはCertbunを使う大きな理由です。何かが完璧に機能していない場合は、Porkbunサポートチームにメールを送ればすぐに解決してくれます。
Certbunのインストールと使用手順は、 Eddieの記事で詳しく説明されています。Eddieの指示に従ってCertbunを試してみたかったので、まずCertbunのスクリプトを読みました。次に、Apacheテストサーバーのファイルシステムのどこにセキュリティ証明書をインストールすればよいかを調べる必要がありました。Certbunのconfig.jsonファイルに証明書の場所を追加することで、Certbunに証明書の場所を伝える必要がありました。
これまで私は主にApacheウェブサーバーとCertbotを使っていました。私のシンプルなユースケースでは、ApacheとCertbotのどちらのデフォルト設定も変更する必要がありませんでした。そのため、Certbotが既に知っているようで、Apacheが証明書の保存場所を知りたいとは思っていませんでした。
そこで、初めてCertbunをインストールするにあたり、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#
「ライブ」の「証明書」が「アーカイブ」された証明書へのシンボリックリンクであることが判明したのは興味深いことです。
次に、Certbun が使用できるように、/etc/certbun、/etc/certbun/live、および /etc/certbun/live/lowend.lol ディレクトリを作成しました。
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"
}
Certbot 証明書から Certbun 証明書に切り替えるために Apache 2 構成に加えた変更は次のとおりです。
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の両方をインストールして実行することに成功した後、ちょっとした楽しいハックで証明書を切り替えられるようになりました。証明書を変更するには、設定ファイルのコメントハッシュタグを2行入れ替えて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のデフォルト設定でCertbunを使用するために必要な情報がすべて網羅されているはずです。
以下は、8 月 11 日に Certbot 経由で Let's Encrypt が発行した証明書を受け入れた Chrome ブラウザです。

以下は、8 月 9 日に Porkbun が Let's Encrypt から取得した、Certbun の新しくダウンロードした証明書を 8 月 11 日に Chrome ブラウザが受け入れた様子です。

特別オファー
このテストを実施したサーバーを提供してくださったGTHostに改めて感謝いたします。Certbunを提供してくださったPorkbunとEddie Barksdaleに改めて感謝いたします。そして、素晴らしいサポートをしてくださったPhillipとPorkbunのサポートチームの皆様に改めて感謝いたします。
GTHostは、2022年9月30日まで有効な、GTHostサーバーで最初の1か月間30%オフとなるプロモーションコードを提供しています。プロモーションコード:LET22-30
新しいドメイン名をお探しですか? PorkbunにアクセスしてクーポンコードLOWENDBOX22を入力すると、新規登録1件につき1ドル割引になります。新規のお客様も既存のお客様もご利用いただけます!
/etc/letsencrypt/ 内の Certbot Apache デフォルト設定
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:~#