Nginx の SSL の設定はほぼデフォルトで大丈夫

公開日:2018-11-04
最終更新:2018-11-04

Open SSL と Nginx のバージョンにもよるけど、たとえば Ubuntu 16.04 LTS だと、このへんだけやっておけば Qualys SSL Labs の評価 A を取れる。

ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;

なぜ?

Nginx 1.9.1 以降ではデフォルトの設定で脆弱性のあるプロトコルや暗号化スイートが無効になっている。

Configuring HTTPS servers - Nginx

v 1.9.1 以降の ssl_protocols の初期値はこう。

ssl_protocols TLSv1 TLSv1.1 TLSv1.2

SSL v2 や SSL v3 はデフォルトで無効になっている。あらためて ssl_protocols を指定しなくてよくなった。

ssl_ciphers は v1.0.5 からこうなってる。

ssl_ciphers HIGH:!aNULL:!MD5

!MD5 は MD5 を使う暗号化スイートを使わない、なので分かると思うけど、 HIGH!aNULL ってなんだろう?

OpenSSL の ciphers の説明 によれば、

HIGH
"High" encryption cipher suites. This currently means those with key lengths larger than 128 bits, and some cipher suites with 128-bit keys.

(中略)

aNULL
The cipher suites offering no authentication. This is currently the anonymous DH algorithms and anonymous ECDH algorithms. These cipher suites are vulnerable to "man in the middle" attacks and so their use is discouraged. These are excluded from the DEFAULT ciphers, but included in the ALL ciphers. Be careful when building cipherlists out of lower-level primitives such as kDHE or AES as these do overlap with the aNULL ciphers. When in doubt, include !aNULL in your cipherlist.

ざっくり説明するとそれぞれ「鍵長 128bit 以上の暗号化スイートを使うよ」「認証のない暗号スイート。使わないときは !aNull を指定してね」くらいのことが書いてある(ちゃんと知りたい人はちゃんと読んでください)。

ただし ssl_prefer_server_ciphers on; をちゃんと書いておかないとサーバ側の暗号化スイートの指定が優先されないので、これを書く必要はある。

Diffie-Hellman 鍵交換のパラメータを 2048bit で作って ssl_dhparam に設定しておけば、この時点で SSL Labs で評価 A が取れる。

あとは HSTS を有効化したりすれば A+ になるんじゃないかと。

記事が少しでもいいなと思ったらクラップを送ってみよう!
0
+1
@aoitakuの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする