先日HTTP/3とQUICに対応したNGINXを構築している際にcertbotの導入手順が変わっているのに気が付きました。
後追いかもしれませんがせっかくなので記事にしたいと思います。
新しいcertbotでNginxをサクッとセキュアにしていきましょう。
何が変わったのか
以前はaptやyumなんかでインストールしていたと思いますが、新しくsnapでインストールするようになりました。
The Certbot snap supports the x86_64, ARMv7, and ARMv8 architectures. While we strongly recommend that most users install Certbot through the snap, you can find alternate installation instructions here.
ということで、snapでインストールすることが強く推奨されるそうです。
snapとは、apt等の上位互換みたいなものですが、それらより柔軟に運用できるそうです。
なんでも、Certbotのチームとしては頑張っているけどポリシーやリソースの問題やらでapt等経由では最適な状態を維持できないそうです。
環境
AWS Lightsail上のDebianで行っていきます。
ドメインの取得及び設定が完了していることを前提とします。
$ uname -a
Linux ip-***-***-***-*** 4.19.0-14-cloud-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64 GNU/Linux
$ nginx -v
nginx version: nginx/1.19.7
snapのインストール
aptでサクッと入ります。
sudo apt update
sudo apt install snapd
下準備
「インストール出来たら必ず更新してね」とのことです。
sudo snap install core; sudo snap refresh core
「もしaptとかでインストールしてたら削除してね!」とのことです。
sudo apt -y remove certbot && sudo apt -y autoremove
もしくはsudo dnf remove certbotまたはsudo yum remove certbotで削除します。
apt purgeすると既存の証明書が消えて厄介なことになります。(体験談)
同じ過ちを犯してしまった人は、nginxの設定ファイルから、証明書(ssl_certificate)とHTTPSの待ち受け(listen ... ssl)をコメントアウトして再発行すればよいです。
certbotのインストール
それではsnap経由でcertbotをダウンロードしていきます。
sudo snap install --classic certbot
コマンドで実行できるようにシンボリックリンクを貼ります。
sudo ln -s /snap/bin/certbot /usr/bin/certbot
証明書発行
certbotの自動設定は確かに優秀なのですが、僕は既に設定を完成させてあり、いじられたくないので認証のみにします。
もちろん新規の場合などは自動設定でもよいと思います。
自動設定だとコマンドを実行するだけでHTTPSが待ち受けできるようになります。
いずれも対話型プロセスで分かりやすいのでよく読んで進めば問題ありません。
# 認証のみ
sudo certbot certonly --nginx
# 自動設定
sudo certbot --nginx
以下のような表示が出れば証明書は正しく発行されています。
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
...
自動更新テスト
certbotは証明書の自動更新をしてくれます。
sudo certbot renew --dry-run
Congratulations, all simulated renewals succeeded:と表示されれば問題ありません。
おわりに
サクッと新しい方式に移行できました。
こんな手軽に暗号化ができるなんて有難い時代ですね。
逆に、こんな手軽に暗号化ができるのだから未対応のサイトはすべて対応してくれ。
マジで。
HTTPしか対応していない企業サイトとか、どんな経営方針なんでしょうか。
ブラウザから締め出されてエンゲージメントが悪化するなど、百害あって一利なしだと思うのですが、それはまた別の話です。
最後までお読みいただきありがとうございました。