前回の記事で構築したLightsailににLet's Encryptを導入してみる。
今回は、テスト環境なのでELBを利用したSSL化ではなく、Let's EncryptをLightsailに導入する方法に。
certbotを利用したサイトが結構あったのですが、うまく行かなかったのでBitnami公式のドキュメントに沿って導入。
WebサーバーはApacheを利用。
特につまづく事もなかったのですが、導入方法を調べるのに少し苦労したので記載しておく。
基本的には、ドキュメントの通りで。
Lego Clientのインストール
cd /tmp
curl -s https://api.github.com/repositories/37038121/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i -
tar xf lego_{ダウンロードしたバージョン}_linux_amd64.tar.gz
sudo mv lego /usr/local/bin/lego
証明書の発行
Bitnamiのサービスを止める
sudo /opt/bitnami/ctlscript.sh stop
証明書の発行
sudo lego --email="{メールアドレス}" --domains="{ドメイン}" --path="/etc/lego" --tls run
試していはいないが、--domains
オプションで複数のドメインの指定が可能。指定した複数のドメインに対して1つの証明書が発行されるらしい。例えば、www有りと無しでドメインを指定すれば、www付きとwww無しの2つで1つの証明書が発行される。
Do you accept the TOS? Y/n
と聞かれるので、Y
を入力
Webサーバーに証明書を導入
Apacheに導入
今回はApacheなので、Apacheに導入する
sudo mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/server.crt.old
sudo mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/server.key.old
sudo mv /opt/bitnami/apache2/conf/server.csr /opt/bitnami/apache2/conf/server.csr.old
sudo ln -s /etc/lego/certificates/{ドメイン名}.key /opt/bitnami/apache2/conf/server.key
sudo ln -s /etc/lego/certificates/{ドメイン名}.crt /opt/bitnami/apache2/conf/server.crt
sudo chown root:root /opt/bitnami/apache2/conf/server*
sudo chmod 600 /opt/bitnami/apache2/conf/server*
Bitnamiのサービス再起動
sudo /opt/bitnami/ctlscript.sh start
確認
対象のドメインにブラウザでアクセスして証明書が反映されていればOK
証明書の更新とCronの設定
証明書の有効期限は90日なので、有効期限が切れる前に更新する必要がある。
証明書の更新
基本的には、Bitnamiのサービスを止めて、証明書を更新してサービスの再開で可能。
sudo /opt/bitnami/ctlscript.sh stop
sudo lego --email="{メールアドレス}" --domains="{ドメイン名}" --path="/etc/lego" renew
sudo /opt/bitnami/ctlscript.sh start
Cronの設定
上記内容をshellスクリプトにして、cronに設定をしてあげる。
スクリプトの作成
sudo vim /etc/lego/renew-certificate.sh
#!/bin/bash
sudo /opt/bitnami/ctlscript.sh stop
sudo lego --email="{メールアドレス}" --domains="{ドメイン名}" --path="/etc/lego" renew
sudo /opt/bitnami/ctlscript.sh start
アクセス権の変更
sudo chmod +x /etc/lego/renew-certificate.sh
Cronの設定
sudo crontab -e
# 毎月0時更新
0 0 1 * * /etc/lego/renew-certificate.sh 2> /dev/null
参考サイト