カテゴリー
AWS Lightsail WordPress

AWS LightsailのWordPressで無料でSSL対応する

1.経緯

LightsailのWordPressをSSL対応するにあたりAmazonCertificateManager(ACM)で取得した証明書を使おうかなと思っていたのですが、ロードバランサにしか設定できないようだったので、とりあえず無料の”Letsencript”を使用する事にしました。

2.証明書発行設定を行います。

SSHより下記コマンドを実行
「afuro.biz」の箇所は設定するドメイン名に書き換えてください。
最後のコマンドを実行すると「Do you accept the TOS? Y/n」と聞かれますので、[y]を入力します。
※以下、ドメイン名の「it-ouji.com」の部分は指定するドメイン名に書き換えてください。

cd /tmp
curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i -

tar xf lego_v*

sudo mv lego /usr/local/bin/lego

sudo /opt/bitnami/ctlscript.sh stop

sudo lego --email="afuro@afuro.biz" --domains="it-ouji.com" --path="/etc/lego" --http run

証明書の設定

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/afuro.biz.key /opt/bitnami/apache2/conf/server.key
sudo ln -s /etc/lego/certificates/afuro.biz.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

3.SSL通信の確認

ブラウザでWordPressサイトにhttpsでアクセスします。
(https://www.it-ouji.com)
ブラウザの証明書欄をクリックして確認します。

4.httpをhttpsへリダイレクト設定

httpでアクセスされた場合、強制的にhttpsへリダイレクトされる設定にします。
vitnamiの設定ファイルを編集します。

sudo vi /opt/bitnami/apache2/conf/bitnami/bitnami.conf

下記の記述部の下に

<VirtualHost _default_:80>
  DocumentRoot "/opt/bitnami/apache2/htdocs"

下の3行を追加して保存します。

  RewriteEngine On
  RewriteCond %{HTTPS} !=on
  RewriteRule ^/(.*) https://www.it-ouji.com/$1 [R,L]

apacheを再起動します

sudo /opt/bitnami/ctlscript.sh restart apache

5.リダイレクトの確認

ブラウザでWordPressサイトにhttpでアクセスします。
すると、httpsにリダイレクトされます。

6.SSL証明書の自動更新設定

Letscriptの証明書有効期限は3ヶ月なので、定期的に証明書を自動更新するように設定します。
ファイルを新規作成します。

sudo vi /etc/lego/renew-certificate.sh

ファイルに下記を全て追加します

#!/bin/bash

sudo /opt/bitnami/ctlscript.sh stop apache
sudo /usr/local/bin/lego --email="afuro@afuro.biz" --domains="it-ouji.com" --path="/etc/lego" --http renew

ファイルに実行権限を付与します。

chmod +x /etc/lego/renew-certificate.sh

cronの設定をします。

sudo crontab -e

毎月1日の3時45分に実行されるようにします。
(アクセス集中によるエラーを避ける為です。)
“2>&1″は標準出力とエラー出力を同じファイルに出すという意味。
エラーだけ出力するときは、
/etc/lego/renew-certificate.sh 2> /var/log/renerw_ssl.log
とします。

45 3 1 * * /etc/lego/renew-certificate.sh > /var/log/renerw_ssl.log 2>&amp;1