以前の記事で Certbot を利用して Let’s Encrypt をインストールする記事を書きましたが、AWS の EC2 に 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 の使用
コメント