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

2015年03月22日

昨日 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

```sh ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ```

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

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

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

nginx.conf

```sh 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

```sh 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

```sh 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