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」をつけること