ようやくHTTP通信からHTTPS通信へと変更しました。
SSL証明書が無料で発行できる時代になり、とてもありがたいことです。
使用したのはおなじみの(?)Let’s Encryptです。
使い方などはこちらのLet’s Encrypt の使い方を見ればイメージがわくと思いますが、とりあえずインストールするためのコマンドを備忘録として置いておきます。
前提
- Amazon Linuxを使用している
- BitnamiやマーケットプレースのAMIを使用していない
- ssl_modlueをインストールしていない
- Route53を使用している
- WordPressのWebサーバーは.htaccessでリダイレクトしている
- Googleの解析サービスを使用している
- Google Analytics
- Google Search Console
- ドメインはkitamix.net
- メールは<email>
サーバーへの設定手順
Let’s Encryptからクライアントソフトウェア「Certbot」をインストールします。
sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto sudo chmod 700 /usr/bin/certbot-auto sudo /usr/bin/certbot-auto certonly --webroot -w /var/www/html --email <email> --debug -d kitamix.net
途中でいくつか質問に答えます。
[2019.01.06 追記]
ワイルドカードの場合はこのコマンドを実行
sudo /usr/bin/certbot-auto certonly --manual -d *.kitamix.net --email <email> --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
そうするとDNS TXT recordにワンタイムテキストを作成するように指定されるのでTXTを登録(して少し待つ)。
登録されたかどうかは下記のコマンドで確認。
nslookup -q=txt _acme-challenge.kitamix.net
[2019.01.06 追記ここまで]
httpdのバージョンを確認しておきます。
2.4系なので、mod24_sslをインストールします。
httpd -v sudo yum install mod24_ssl
ssl.confに設定を更新します。
sudo vi /etc/httpd/conf.d/ssl.conf
上2行はバーチャルホストのディレクティブ内にある設定値をコメントアウトしたもので、最後の4行はssl.confの末尾に挿入したものです。
# SSLProtocol # SSLCipherSuite SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES:!RC4:!DH SSLHonorCipherOrder On Header set Strict-Transport-Security "max-age=315360000;"
[2019.01.06 追記]
下記のpemファイルへのパスも追記します。
SSLCertificateFile /etc/letsencrypt/live/kitamix.net/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/kitamix.net/privkey.pem
ワイルドカードの場合はサブドメインを指定する。
[2019.01.06 追記ここまで]
Webサーバーの再起動
sudo service httpd restart
QualysのSSL Server TestをやってみるとA+まで行くはず(2018年11月現在)
結果を公開されないように”Do not show the results on the boards”のチェックを忘れずに。
Let’s Encryptの期限は90日なので下記のコマンドをcronに登録しておきます。
sudo /usr/bin/certbot-auto renew --post-hook "sudo service httpd restart"
cronの動作確認コマンド
/etc/rc.d/init.d/crond status
毎週、日曜日の夜中3時に確認するように設定しておきました。
sudo vi /etc/cron.d/letsencrypt
次はWordPressの設定です。
sudo vi wp-config.php
リダイレクトループを避けるため、下記の2行を追記
$_SERVER['HTTPS'] = 'on'; $_ENV['HTTPS'] = 'on';
設定 > 一般設定から下記のURLをHTTPからHTTPSへ更新
- WordPressアドレス(URL)
- サイトアドレス(URL)
最後に.htaccessに下記を追加します。
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
これでサーバーへの設定は終わりです。
サービスの設定
Googleのサービスをhttpからhttpsに変更しておくのも忘れないようにしておく。
[2019.01.06 追記]
Google Analytics
-> HTTPをHTTPSに変更(するが、過去のは消えてしまうのでコピーしたほうが良いか?)
Google Search Console
-> 新しいプロパティを作成
[2019.01.06 追記 ここまで]