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/renew_ssl.log
とします。
45 3 1 * * /etc/lego/renew-certificate.sh > /var/log/renew_ssl.log 2>&1