昨日 HTTPS 化した シャンプー評価サイト のSSL評価をA+にしました。 参考にしたのは下の記事
この記事のNginx証明書設定をPOSTDさんが翻訳しているので、近いうちに詳しい訳は日本語で読めるかも。ここでは適当にかいつまんだ手順を書いておく。一部時間のかかるコマンドもあるけど、基本的に決まった設定書くだけなので時間はかかりません。(もちろんどういう意味なのか知っておくに越したことはない)
SSLの評価計測について
SSLサーバーのテストはQualys SSL Reportで確認します。 Nginxデフォルトの設定で計測したら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 Server Test: haskamiya.kksg.net (Powered by Qualys SSL Labs) 美容室で働く美容師のシャンプー評価とヘアケアについての独り言のランキング
技術評論社
売り上げランキング: 335