Let’sEncryptでWordPressのHTTPS対応

HTTPS対応とは

大きな違いとしてURLが変わります。「http://」ではなく「https://」になります。
ブラウザのURLバーが緑になったりセキュアなサイトだと一目で分かるようになります。
また、検索エンジンにも影響を与えるとgoogleの公式アナウンスが出ています。
https://webmaster-ja.googleblog.com/2014/08/https-as-ranking-signal.html

少し前までは証明書は年額で購入する必要があり導入しているサイト管理者も少なかったのですが、今では無償でも証明書を取得できるようになり導入しているサイトも増えてきています。
無償だからセキュリティが弱いということはありません。今回は無償の証明書で最も導入されているであろうLet’s Encryptで導入していきます。

この記事で実行するコマンドはrootユーザで実行してください。
CentOS7で導入を想定しています。
su –
password:*********

Let’sEncryptのインストール

あとは表示される利用規約に問題がなければ、同意(Agree)をしてインストール完了です。

今回はサブドメインなしのみの場合で設定しますが、設定方法に違いはありません。

証明書と秘密鍵が保存される場所と設定する値

以下の場所をlsコマンドで確認して見ましょう。

上記の出力から分かるようにシンボリックリンクが貼られており、実態のファイルは以下の場所にあります。

実際にNginxに設定する値は「/etc/letsencrypt/live/example.jp/」のディレクトリに入っている証明書を設定します。

Diffie-Hellman鍵交換用パラメータファイルの準備

Diffie-Hellman鍵交換とはSSLで接続する際に鍵交換を行うのですが、その通信傍受に対する耐性を上げることができます。

Nginxの設定

Nginxのコンフィグは前の記事のコンフィグを編集しています。

WordPress構築ハンズオン(CentOS7 Nginx MariaDB PHP7)

2017.11.10

2段階に分けて設定をしていきます。
既存の80ポートの設定の下に追記します。ここではsslは適用していません。
ssl on;はコメントアウトしています。

コンフィグチェックをしてリロードします。

WordPressとFirewallの設定変更

WordPressのサイトURLをhttpsへ変更します。
WordPress > ダッシュボード > 設定 > 一般 >「WordPress アドレス (URL)」「サイトアドレス (URL)」
「http://example.com」 を 「https://example.com」 へ変更します。

FireWallの設定で443ポートを許可します。

ブラウザからhttpsでアクセスして表示できることを確認します。

Nginxの最終設定

変更点

  1. 80番ポートの設定をhttpsへリダイレクトする設定に変更
  2. 443番ポートの設定にhttp2の設定
  3. 443番ポートのsslをオン
  4. HSTSの設定

SSL化後にやること

証明書の自動更新

LetsEncryptの証明書は3ヶ月です。しかし、コマンドで証明書を更新することができるため自動化することができます。
crontabで1ヶ月ごとに以下のコマンドを実行する設定にします。

コマンドが実行できるか手動で一度確認しておきましょう。
HSTSを設定しているため証明書の期限が切れた場合ブラウザからアクセスできなくなります。

WordPressのURL置換

WordPressの場合、URLを変換しないといけないので、プラグインのSearch Regexで置換します。

セキュリティ強度の確認

また以下のサイトからサイトのセキュリティ強度を確認できます。
https://www.ssllabs.com/ssltest/

無事A+判定にすることができました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です