AmazonLinux2 に限った話ではないですが、2021 年に入ってから新規に Let’s Encrypt を導入する方法が変わりました。
以下の AmazonLinux へ導入した時の記事はもう役に立たなくなりますね。

近年は docker の利用機会が多く(AWS だと ECS とか EKS)、EC2 で新規にサイト構築するのが久し振りということもあり、完全に情報を逃していました。
今回は、AmazonLinux2 で Let’s Encrypt が利用できるように設定方法を紹介していきます。
従来の方法だとエラーが発生
EC2 を構築する時は、何年も前から使用している簡単な手順書(コマンドラインの羅列)
別の記事で詳しく書きますが、今回 AmazonLinux2 を触るのが初めてだったこともあり、最初は何のエラーかわかりませんでした。
1 2 3 4 | Skipping bootstrap because certbot-auto is deprecated on this system. Your system is not supported by certbot-auto anymore. Certbot cannot be installed. Please visit https://certbot.eff.org/ to check for other alternatives. |
certbot-auto はダウンロードできるのに、コマンド実行時に怒られます。
要は、こういうことですね。
このシステムではcertbot-autoが非推奨であるため、ブートストラップをスキップします。お使いのシステムはcertbot-autoでサポートされなくなりました。Certbotをインストールできません。https://certbot.eff.org/にアクセスして、他の選択肢を確認してください。
公式サイトの手順に従う
公式サイトでは、以下の 2 つの情報を選択すると最適なインストール方法を教えてくれます。
・ソフトウェア(Webサーバなど)
・システム(OSなど)
今回は AmazonLinux2 上で Nginx を動かすので、Software のプルダウンで「Nginx」、System のプルダウンで AmazonLinux2 に近そうな「CentOS/RHEL 7」を選択しました。
snapdを導入する
公式の説明に従うと、snapd で certbot をインストールするということですね。
ただ、AmazonLinux2 で snapd をインストールする方法は書かれていないので、snapd のパッケージを管理しているリポジトリを設定します。
1 2 3 4 5 6 7 | $ cd /etc/yum.repos.d/ $ wget https://people.canonical.com/~mvo/snapd/amazon-linux2/snapd-amzn2.repo $ vi /etc/yum.conf exclude=snapd-*.el7 snap-*.el7 |
この方法は以下のサイトに書かれていました。助かります。
これで snapd のインストールができます。
1 2 3 | $ yum install snapd $ systemctl enable --now snapd.socket |
snapd が最新バージョンか確認します。
1 2 3 | $ snap install core $ snap refresh core |
certbotのインストール
certbot をインストールします。
1 2 3 | $ snap install --classic certbot $ ln -s /snap/bin/certbot /usr/bin/certbot |
これで SSL のサーバ証明書を発行する準備ができました。
証明書発行のコマンドは従来のもので問題ありませんでした。
(私はいつも以下のコマンドで発行しています)
1 | $ certbot certonly --debug --webroot -w /usr/share/nginx/hoge/docroot -d [ドメイン] --email [メールアドレス] |
証明書が無事に発行できたら、Nginx の定義を編集して再起動します。
1 2 3 | $ vi /etc/nginx/conf.d/hoge.conf $ systemctl restart nginx.service |
まとめ
AmazonLinux2 における、snapd を使った certbot の利用方法を紹介しました。
プライベートな AWS 環境のメンテナンスを怠っていたということもあり、この手の情報のキャッチアップが足りていなかったのはショック。
冒頭でも書きましたが、AmazonLinux1 の AMI が 2021 年から提供されなくなったことも知らなかったため、今回は少し環境構築に苦戦することになりました。
ただ、その苦労の甲斐もあって certbot が Python ではなく snapd 管理下になったのは不幸中の幸い。
Python やら pip やらで certbot には悩まされた記憶しかありませんから・・・。