Bitnamiに乗っているWordPressのドメインSSL化手順

Bitnamiに乗っているWordPressのドメインSSL化手順:


1. 概要

SSL証明書は無料の「Let's Encrypt」を使用し、その操作にはGo言語製のACMIクライアント「Lego」を使用する(あのLEGOじゃないよ)。

適用するドメインは「Bitnami」上で動く「WordPress」製のWebサイトで使用しているもの。

以下の実装方法の説明の中で使用する「APP_DOMAIN」「MAIL@EXAMPLE.COM」は適宜変更(または読み替え)。


2. Legoのインストール

CLI
$ cd /tmp 
$ curl -s 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_vX.Y.Z_linux_amd64.tar.gz 
$ sudo mv lego /usr/local/bin/lego 


3. Legoを使ってSSL証明書を発行する

CLI
$ sudo /opt/bitnami/ctlscript.sh stop 
$ sudo lego --email="MAIL@EXAMPLE.COM" --domains="APP_DOMAIN" --path="/etc/lego" run 
Your account credentials have been saved in your Let's Encrypt 
configuration directory at "/etc/lego/accounts/acme-v02.api.letsencrypt.org/MAIL@EXAMPLE.COM". 
You should make a secure backup of this folder now. This 
configuration directory will also contain certificates and 
private keys obtained from Let's Encrypt so making regular 
backups of this folder is ideal. 
2018/12/09 08:10:30 [INFO] [APP_DOMAIN] acme: Obtaining bundled SAN certificate 
2018/12/09 08:10:31 [INFO] [APP_DOMAIN] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz/****************************** 
2018/12/09 08:10:31 [INFO] [APP_DOMAIN] acme: Authorization already valid; skipping challenge 
2018/12/09 08:10:31 [INFO] [APP_DOMAIN] acme: Validations succeeded; requesting certificates 
2018/12/09 08:10:32 [INFO] [APP_DOMAIN] Server responded with a certificate. 


4. 作成されたSSL証明書をシステムから参照できるようにする

CLI
$ 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/APP_DOMAIN.key /opt/bitnami/apache2/conf/server.key 
$ sudo ln -s /etc/lego/certificates/APP_DOMAIN.crt /opt/bitnami/apache2/conf/server.crt 
$ sudo chown root:root /opt/bitnami/apache2/conf/server* 
$ sudo chmod 600 /opt/bitnami/apache2/conf/server* 
 
$ sudo /opt/bitnami/ctlscript.sh start 


5. SSL証明書を自動更新させる

SSL証明書更新用のスクリプト「/etc/lego/renew-certificate.sh」を作成し、cronで定期実行させる。

CLI
$ sudo vi /etc/lego/renew-certificate.sh 
================================= 
#!/bin/bash 
$ sudo /opt/bitnami/ctlscript.sh stop apache 
$ sudo /usr/local/bin/lego --email="EMAIL@EXAMPLE.COM" --domains="APP_DOMAIN" --path="/etc/lego" renew 
$ sudo /opt/bitnami/ctlscript.sh start apache 
================================= 
 
$ sudo chmod +x /etc/lego/renew-certificate.sh 
 
$ sudo crontab -e 
================================= 
0 0 1 * * /etc/lego/renew-certificate.sh 2> /dev/null 
================================= 
 
$ sudo crontab -l 
0 0 1 * * /etc/lego/renew-certificate.sh 2> /dev/null 


6. [WP] .htaccessとwp-config.phpの設定

WordPressの設定ファイル「.htaccess」「wp-config.php」をHTTPSプロトコルに適用させる。

CLI
$ sudo vi /opt/bitnami/apps/wordpress/htdocs/.htaccess 
================================= 
# 以下のコードを追加 
<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{HTTPS} !=on [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 
</IfModule> 
: 
================================= 
CLI
$ vi /opt/bitnami/apps/wordpress/htdocs/wp-config.php 
================================= 
// プロトコルを "https://" に変更 
define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/'); 
define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/'); 
 
// 以下のコードを追加 
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) 
    $_SERVER['HTTPS']='on'; 
================================= 
Apacheを再起動させる。

CLI
$ sudo /opt/bitnami/ctlscript.sh restart apache 


7. [WP] 記事コンテンツ内のテキストを変換

記事コンテンツ内の「http://」というテキストを「https://」に変換する。テキストの変換はプラグイン「Search Regex」を使用する。

使い方は以下の記事を参考に。


反省点・注意点とか

  • 上手くHTTPSに切り替わらない場合は「6. [WP] .htaccessとwp-config.phpの設定」部分のコードがおかしい場合はある
  • EC2のセキュリティグループで「443」ポート(HTTPS)を開ける(開けない場合、サイトにアクセスするとリダイレクトループが起こる)
  • ブラウザのキャッシュは切ろう


参考記事

コメント

このブログの人気の投稿

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-04-30 23:37:32 RSSフィード2021-04-30 23:00 分まとめ(42件)

投稿時間:2023-02-05 02:09:04 RSSフィード2023-02-05 02:00 分まとめ(9件)