AWS EC2 に Let’s Encrypt をインストールする

クラウド

以前の記事で Certbot を利用して Let’s Encrypt をインストールする記事を書きましたが、AWSEC2 に Let’s Encrypt をインストールする際にひと手間必要でしたので、その手順を紹介したいと思います。

参考: Let’s Encrypt SSL 証明書の更新時のエラー


インストール前準備
まずは EPEL からリポジトリパッケージをインストールします。

>wget -r --no-parent -A 'epel-release-*.rpm' https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/
>rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm
>yum-config-manager --enable epel* # EPELを有効にする
>yum repolist all # リポジトリを確認
...
epel/x86_64                          Extra Packages for Enterprise Linux 7 - x86_64                               enabled: 12949+175
epel-debuginfo/x86_64                Extra Packages for Enterprise Linux 7 - x86_64 - Debug                       enabled:      2890
epel-source/x86_64                   Extra Packages for Enterprise Linux 7 - x86_64 - Source                      enabled:         0
epel-testing/x86_64                  Extra Packages for Enterprise Linux 7 - Testing - x86_64                     enabled:    778+12
epel-testing-debuginfo/x86_64        Extra Packages for Enterprise Linux 7 - Testing - x86_64 - Debug             enabled:       107
epel-testing-source/x86_64           Extra Packages for Enterprise Linux 7 - Testing - x86_64 - Source            enabled:         0
...

 次にVirtualHostなどの「Listen 80」ディレクティブを/etc/httpd/conf/httpd.conf等に追記します。

<VirtualHost *:80>
	DocumentRoot "/var/www/html"
	ServerName "example.com"
	ServerAlias "www.example.com"
</VirtualHost>


Certbot のインストールと実行
Certbot をインストールします。

>yum install -y certbot python2-certbot-apache # apache

私の環境では、Certbot を実行すると以下のようなエラーが出ました。

>certbot --apache -d example.com
・・・
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (cryptography 1.7.2 (/usr/lib64/python2.7/site-packages), 
Requirement.parse('cryptography>=3.2'), set(['PyOpenSSL']))

cryptography のバージョンが古いようです。
pip コマンドで version 3.2 の cryptography をインストールします。
pip とは、Python 関連のパッケージやライブラリを管理するコマンドラインツールです。

>pip install cryptography=="3.2"

再度 Certbot を実行します。

>certbot --apache -d example.com
・・・
Congratulations! You have successfully enabled https://example.com

色々と質問されますが、それに答えて完了です。
質問の内容は前記事の「Let’s Encrypt SSL 証明書の更新時のエラー」を参考にしてください。
これで SSL 証明書が取得できました。
証明書は/etc/letsencrypt/live/{ドメイン名}配下に作成され、apache の設定ファイルを検出して自動で適用してくれます。

あとは、web サーバを再起動して完了です。

>systemctl restart httpd # apache


ちなみに、AWS のサイトに Let’s Encrypt についての記事が載っています。

Certbot は Amazon Linux 2 で公式にサポートされていませんが、ダウンロードすることができ、インストールすると正常に機能します。データを保護し、問題を回避するため、次のバックアップを作成しておくことをお勧めします。

Certificate Automation: Amazon Linux 2 での Let’s Encrypt と Certbot の使用

コメント