Bitnamiに乗っているWordPressのドメインSSL化手順
Bitnamiに乗っているWordPressのドメインSSL化手順:
SSL証明書は無料の「Let's Encrypt」を使用し、その操作にはGo言語製のACMIクライアント「Lego」を使用する(あのLEGOじゃないよ)。
以下の実装方法の説明の中で使用する「APP_DOMAIN」「MAIL@EXAMPLE.COM」は適宜変更(または読み替え)。
SSL証明書更新用のスクリプト「/etc/lego/renew-certificate.sh」を作成し、cronで定期実行させる。
WordPressの設定ファイル「.htaccess」「wp-config.php」をHTTPSプロトコルに適用させる。
Apacheを再起動させる。
記事コンテンツ内の「http://」というテキストを「https://」に変換する。テキストの変換はプラグイン「Search Regex」を使用する。
使い方は以下の記事を参考に。
1. 概要
SSL証明書は無料の「Let's Encrypt」を使用し、その操作にはGo言語製のACMIクライアント「Lego」を使用する(あのLEGOじゃないよ)。- Let's Encrypt: https://letsencrypt.jp/
- Lego: https://github.com/xenolf/lego
以下の実装方法の説明の中で使用する「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';
=================================
CLI
$ sudo /opt/bitnami/ctlscript.sh restart apache
7. [WP] 記事コンテンツ内のテキストを変換
記事コンテンツ内の「http://」というテキストを「https://」に変換する。テキストの変換はプラグイン「Search Regex」を使用する。使い方は以下の記事を参考に。
反省点・注意点とか
- 上手くHTTPSに切り替わらない場合は「6. [WP] .htaccessとwp-config.phpの設定」部分のコードがおかしい場合はある
- EC2のセキュリティグループで「443」ポート(HTTPS)を開ける(開けない場合、サイトにアクセスするとリダイレクトループが起こる)
- ブラウザのキャッシュは切ろう
参考記事
- https://docs.bitnami.com/aws/how-to/generate-install-lets-encrypt-ssl/
- https://docs.bitnami.com/aws/how-to/configure-elb-ssl-aws/#step-4-modify-the-web-server-configuration-on-the-bitnami-application-instance
- https://osusume-houhou.com/search-regex-how-to-globally-replace-the-image-url-to-https-from-http/
コメント
コメントを投稿