QUALYS SSL Server Testの結果をA-からA+にしたApache設定

2017/05/22[公開] 2019/11/18[最終更新]

qualty-test1

 Let’s Encrypt証明書で常時SSLにしているこのサイトですが、QUALYS SSL LABS (https://www.ssllabs.com/ssltest/)のSSL Server Test 結果をA-(Aマイナス)からA+(Aプラス)にすることが出来ました。

 Debian JessieのApache2のデフォルト設定のままでAマイナスなので、最初からなかなか良い成績です。さらにA-をAにするのは簡単でした。さらに常時SSLサイトなら、A+にもできました。Debian Jessieの安定版である、apache(2.4.10-10+deb8u8)、openssl(1.0.1t-1+deb8u6)での内容となります。

このページの目次

スポンサー リンク

A-をAに(Forward Secrecyサポート)

 テスト結果がA-の場合、「The server does not support Forward Secrecy with the reference browsers. 」というアドバイスが出ているはずです。More Info>>を開いても、Forward Secrecyとは何かという説明が英語で詳細に出ていますが、じゃあどうすれば良いのかはさっぱりわかりませんでした。ネットで調べると設定ファイルを一行変えるだけで対応できるようです。

SSL.confを編集

 Debian JessieのApache2の場合、設定ファイル/etc/apache2/mods-available/ssl.conf を編集します。70行目の#SSLHonorCipherOrder onの先頭の#を外して有効にします。

# SSL server cipher order preference:
# Use server priorities for cipher algorithm choice.
# Clients may prefer lower grade encryption.  You should enable this
# option if you want to enforce stronger encryption, and can afford
# the CPU cost, and did not override SSLCipherSuite in a way that puts
# insecure ciphers first.
# Default: Off
SSLHonorCipherOrder on

 これで、クライアントのブラウザーが弱い方の暗号化を選びたがる傾向があるのを、サーバー側で強い方の暗号化が選ばれるようにする設定が有効になるようです。上記のコメントにそう書いてあります。

apache2リロード

 apache2をリロードして設定が反映されました。これて再テストするとAマイナスからAの結果に変更となりました。

service apache2 reload

AをA+に(HSTSサポート)

 Aになって喜んでいたら、常時SSLサイトならばAプラスにもできるようだったので設定しました。HSTS(HTTP Strict Transport Security)の常時SSL通信対応にする設定をします。http://~でアクセスしてもhttps://~でサイトが表示される設定です。

 いままでこのサイトでも.htaccessに301リダイレクトの設定をしており、http://~のアクセスもリダイレクトでhttps://~に強制的に表示する設定をしているのにと思いましたが、301リダイレクトではリダイレクトされるまで暗号化されていない通信が発生するのに対し、HSTSが有効だとブラウザーに事前にSSL通信でアクセスに来るように伝えることができるので、よりセキュアな通信が可能ということのようです。(参考サイト:Mozilla MDN

Sites-Availableの設定ファイル

 Debian JessieのApacheの場合は、/etc/apache2/sites-available/default-ssl.conf  ファイルを編集します。deault-ssl.confファイルはdebianデフォルトの設定ファイルですが、環境によりファイル名は違います。

 追加する一行は、Header set Strict-Transport-Security “max-age=31536000; includeSubDomains” です。必ず常時SSLサイトになっているホスト名のバーチャルホストにだけ設定する必要があります。

 下の例のように、SSL証明書バスの下に追記しました。

<VirtualHost:443>
	ServerAdmin hoge@localhost
	ServerName def-4.com
	DocumentRoot /var/www/

	SSLEngine on

        SSLCertificateFile      /etc/letsencrypt/live/def-4.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/def-4.com/privkey.pem
        SSLCACertificateFile /etc/letsencrypt/live/def-4.com/chain.pem

	Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"

</VirtualHost>

  Headersモジュールが必要ですが、おそらくすでに有効になっているはずです。念のため有効にしてみます。(すでに有効なら、”already enabled” と出るだけです。)

a2enmod headers

apache2リロード

 apache2をリロードして設定が反映されます。これて再テストするとAからA+の結果に変更となりました。

service apache2 reload

最後に

 このHSTS設定は、公開ディレクトリーの.htaccessに設定しても良いみたいです。それでも、.htaccessには301リダイレクトの記述があるままにしておいても、今回のapacheに設定する方法の方が優先されます。サーバーの設定が変更できないときは、.htaccessに設定するのが良いでしょう。

追記

 NginxでHSTS設定をしてA+評価にした記事はこちら

 OpenLiteSpeedでHSTS設定をしてA+評価にした記事はこちら

スポンサー リンク

コメントを残す

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