WordPress

WordPress - NginxでSSLの評価をA+にするまでの方法まとめ

NginxにSSLを導入してhttps通信する場合、設定によってはSSLの評価サイトでFなんて評価を食らってしまう場合がございます。せっかくSSL化したとしても、安全な通信が保証されなければ意味がありません。そこで、今回は、SSL評価サイトでF評価を食らってしまったこのブログサイトをA+の評価まで上げきった方法をご紹介します。

WordPress+NginxでSSLの評価をA+にするまでの方法まとめ

本記事を書くことにした経緯

Miningooでは、Ubuntu14.04+NginxにWordPressを乗っけてブログを運営しております。

Ubuntu14.04にてnginx環境を構築しWordpPressを高速に

先日、このブログをSSL化したのですが、後日SSL評価のサイトをためしてみると最低評価のFを食らってしまいまいした。

SSL評価のサイトをためしてみると最低評価のFを食らってしまいまいした

Ubuntu 14.04 + Nginx環境にてopenSSLを設定する手順まとめ

WordPressをSSL化してhttpからhttpsに変更する方法まとめ

せっかくSSL化したのに安全な通信が保証されていなければ意味が無いので、早速対応すること。

SSL対応したサイトを評価する方法

SSL Server Test (Powered by Qualys SSL Labs)

上記URLのサイトにドメイン名を入力するだけで、チェックすることができます。このブログで試してみると、最低評価のFを食らってしまいました。

NginxでSSLの評価をA+にするまでにやっとことリスト

NginxでSSLの評価をA+にする手順 - 9mのパソコン日記

を参考に、以下の4つの方法を実際にやってみました!

  1. OpenSSLをアップデートする
  2. SSLv3 を無効にする
  3. Diffie-Hellman (DH) key exchangeを生成して設定
  4. HSTSヘッダを追加

1. OpenSSLをアップデートする

SSL LABSの評価後のメッセージに、
「This server is vulnerable to the OpenSSL Padding Oracle vulnerability (CVE-2016-2107) and insecure. Grade set to F.」
とありました。

調べてみると、2016/5/3時点で、OpenSSLの複数の脆弱性が公開されていました。

OpenSSLに複数の脆弱性(CVE-2016-2107, CVE-2016-2108等) — | サイオスOSS | サイオステクノロジー

これに対応するために、OpenSSLをアップデートする必要があります。

【 Q 】OpenSSLのアップデート手順

を参考に、OpenSSLをアップデートしていきます。

Ubutnuのターミナルで以下のコマンドを入力

// バージョンの確認
$ dpkg -l | grep openssl

// Upgradeするバージョンの確認
$ apt-get -s upgrade | grep openssl

// 実際にOpenSSLをUpgrade
$ apt-get -y upgrade openssl

// アップグレードするバージョンもう無いことを確認
$ apt-get -s upgrade | grep openssl

// アップグレードしたバージョンを確認
$ dpkg -l | grep openssl

OpenSSLのアップデートで評価がFからBへあがりました。

OpenSSLのアップデートで評価がFからBへ

このアップデートを定期的にしないと、最新の致命的な脆弱性に対応できないので今後定期的にチェックしていく。

2. SSLv3 を無効にする

SSLv3の脆弱性「POODLE」を回避するため、SSLv3を無効にする。

nginxの.confファイルのssl_protocolsを以下のように設定する。

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

この作業で、ひとつ警告が減りました。

httpsだからというだけで安全?調べたら怖くなってきたSSLの話!? - Qiita

3. Diffie-Hellman (DH) key exchangeを生成して設定

DH鍵交換に使用するパラメータファイルを生成して設定する。

以下のコマンドを叩くと、パラメータファイルを生成できる。

$ openssl dhparam 2048 -out dhparam.pem

生成後、Nginxの.confファイルでパラメータファイルを指定する。

ssl_dhparam /あなたの環境に合わせたフォルダ/dhparam.pem;

Nginxのリロードを忘れずにする

$ sudo service nginx restart

ここまでの設定で、A評価まであがりました!

ここまでの設定で、A評価まであがりました!

4. HSTSヘッダを追加

サーバーのヘッダにSecurity-Transport-Securityというヘッダをつけることで、以降そのブラウザからのアクセスは常にHTTPSで暗号化したもので行うように設定させられる。

Nginxの.confファイルに以下を追記する

add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;';

おなじみのNginx再起動をわすれずに。

$ sudo service nginx restart

ついにこの設定でA+の評価になりました!

ついにこの設定でA+の評価になりました!

本記事のまとめ

NginxにOpenSSLを導入してせっかくhttps通信にしたのに、まさかのSSLの評価がFになってしまっては意味がありません。本記事の設定をすることで、簡単にSSLの評価がA+まであがります。是非、みなさんも安全なSSLライフを!

-WordPress