Webサービスやアプリを開発して運営するのが趣味です。



NginxでSSLの評価をA+にする手順

2015年03月22日 20:05

昨日 HTTPS 化した シャンプー評価サイト のSSL評価をA+にしました。

参考にしたのは下の記事

HTTPS on Nginx: From Zero to A+ (Part 2) - Configuration, Ciphersuites, and Performance - Julian Simioni

この記事のNginx証明書設定をPOSTDさんが翻訳しているので、近いうちに詳しい訳は日本語で読めるかも。ここでは適当にかいつまんだ手順を書いておく。一部時間のかかるコマンドもあるけど、基本的に決まった設定書くだけなので時間はかかりません。(もちろんどういう意味なのか知っておくに越したことはない)

SSLの評価計測について

SSLサーバーのテストはQualys SSL Reportで確認します。

Nginxデフォルトの設定で計測したらCだった。

SSL C

SSLv3 を無効にする

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

SSLv1 / SSLv2 / SSLv3 全部だめらしい、、

これをするだけで評価はAになった。

nginx.conf


ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

なお、この設定でTLSに対応していないIE6は切り捨てられますがそんなことはどうでもいい。(TLS 1.0 に対応してはいるけどデフォルトで無効らしい)

暗号化スイートを明示的に設定

使用する暗号化スイートを明示的に設定する。設定する暗号化についての説明はここでは省きます。このへんの話はhttpsだからというだけで安全?調べたら怖くなってきたSSLの話!? - Qiitaにわかりやすく日本語でまとまってます。この時点も評価はAのまま。

nginx.conf


ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:
DH+AESGCM:ECDH+AES256:DH+AES256:
ECDH+AES128:DH+AES:
!aNULL!eNull:!EXPORT:!DES:!3DES:!MD5:!DSS;

ssl_dhparam

nginx.conf


ssl_dhparam /etc/nginx/ssl/dhparam.pem

DH鍵交換に使用するパラメータファイルを指定する。このdhparam.pemは下OpenSSLコマンドで生成できる。環境によっては計算にめっちゃ時間がかかるっぽいので注意。うちの場合5分程度で終わった。この時点でもA評価のまま。


openssl dhparam 2048 -out dhparam.pem

HSTSヘッダを追加

サーバーから “Strict-Transport-Security” というヘッダを返すことで、以後そのブラウザで常時 HTTPS で暗号化した通信を行うようにするようになる。serverディレクティブに以下ようにヘッダーを追加。この時点でA+評価に。めでたい!

nginx.conf


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

SSL A+評価

評価結果と評価したサイト

SSL Server Test: haskamiya.kksg.net (Powered by Qualys SSL Labs)

美容室で働く美容師のシャンプー評価とヘアケアについての独り言のランキング



nginx実践入門 (WEB+DB PRESS plus)



久保 達彦 道井 俊介
技術評論社
売り上げランキング: 335