先日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
しか対応していない企業サイトとか、どんな経営方針なんでしょうか。
ブラウザから締め出されてエンゲージメントが悪化するなど、百害あって一利なしだと思うのですが、それはまた別の話です。
最後までお読みいただきありがとうございました。