Amazon Linux 2 で Let’s EncryptのSSL証明書取得エラー

Amazon linux 2 で certbot-auto で証明書を取得できるようにする

AWSのEC2で Amazon linux 2 のサーバに対してLet’s EncryptのSSL証明書取得時にエラーが発生します。(2019年02月時点)

certbot-autoで証明書取得時に以下のエラーが出ます。

Sorry, I don't know how to bootstrap Certbot on your operating system!

You will need to install OS dependencies, configure virtualenv, and run pip install manually.
Please see https://letsencrypt.readthedocs.org/en/latest/contributing.html#prerequisites
for more info.

certbot-autoにAmazon Linux 2 の定義がないために起こっているようです。certbot-autoを修正してAmazon Linux 2 を認識できるようにします。

$ cd /usr/bin
$ sudo cp certbot-auto certbot-auto.org
$ sudo vi certbot-auto
$ diff certbot-auto certbot-auto.org
790,792c790
< #elif [ -f /etc/issue ] && grep -iq "Amazon Linux" /etc/issue ; then
< elif grep -i "Amazon Linux" /etc/issue > /dev/null 2>&1 || \
< grep 'cpe:.*:amazon_linux:2' /etc/os-release > /dev/null 2>&1; then
---
> elif [ -f /etc/issue ] && grep -iq "Amazon Linux" /etc/issue ; then

Let's EncryptでSSL証明書取得

改めて、Let's EncryptでSSL証明書取得する手順を記載しておきます。

pipのインストール

Pythonのインストール確認

python -V

pipのインストール

yum install python-pip

SSL証明書の取得(Let's Encrypt で取得)

Let's Encrypt (certbot-auto)のインストール
root になり以下を実行

curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
chmod 700 /usr/bin/certbot-auto

※ ここで、Amazon Linux 2 の場合は、上記の対応を certbot-auto に実施する。

SSL証明書の取得

certbot-auto certonly --webroot -w /var/www/html -d xxx.com --email xxx@xxx.com --debug

※ EUC環境のときコマンドの最初に 「LANG=ja_JP.UTF-8」を付ける
※ AWSのEC2の場合は「--debug」をつけること
※ -w : ドキュメントルート / -d : ドメイン名 / -email : 連絡先メールアドレス

以下に証明書と鍵が作成される(正確には最新証明書のシンボリックリンク)

/etc/letsencrypt/live/xxx.com/chain.pem
/etc/letsencrypt/live/xxx.com/fullchain.pem
/etc/letsencrypt/live/xxx.com/privkey.pem
/etc/letsencrypt/live/xxx.com/cert.pem

apacheの設定

/etc/httpd/conf.d/ssl.conf の編集
ドキュメントルートとサーバーネームの設定

<VirtualHost _default_:443>
# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/html" 
ServerName xxx.com:443

SSLCertificateFileとSSLCertificateKeyFileの指定を以下に書き換える

SSLCertificateFile /etc/letsencrypt/live/xxx.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xxx.com/privkey.pem

apacheの再起動

systemctl restart httpd

証明書の自動更新設定

/etc/crontab に以下を設定

# SSL UPDATE
00 16 * * 2 root /usr/bin/certbot-auto renew --debug --post-hook "sudo service httpd restart" > /dev/null 2>&1

※ EUC環境のときコマンドの最初に 「LANG=ja_JP.UTF-8」を付ける
※ AWSのEC2の場合は「--debug」をつけること

コメントを残す

コメントは当サイト運営者の承認後に反映されます。
お名前はニックネームでも結構です。