27
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

デザイントランスメディアAdvent Calendar 2018

Day 14

Amazon LightsailにLet's Encryptを導入してSSL化する

Last updated at Posted at 2018-12-13

前回の記事で構築した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
スクリーンショット 2018-12-06 11.44.23.png

証明書の更新と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
/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

参考サイト

27
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?