LoginSignup
0
0

More than 5 years have passed since last update.

sslセキュリティをBからA+まで上げる

Posted at

SS 2017-11-03 16.36.07.png
前回certbotを利用してSSL認証を取得した段階では、SSL Server Testのセキュリティ評価はBでした。これをA+にすることが今回の目標です。

後から気づきましたが、評価基準はこちらのSSL Server Rating Guideに明記されていました。80点以上でAですね。

まず、点数が低いkeyexchange parameters。Qualysの評価詳細を下まで見ていくと、Forward Secrecyが弱いことがわかりました。

そこで、PFS(Perfect Forward Secrecy)で改善できないか試します。
https://rms-digicert.ne.jp/howto/basis/Forward_Secrecy_Apache_Ngix.html

nginx.conf
server {
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS";

        ssl_prefer_server_ciphers  on;
}

SS 2017-11-03 16.45.26.png
Forward Secrecyに関する警告文は無くなった。

単純にDHを無効化する
参考:https://www.saintsouth.net/blog/safety-of-ssl-certificate-setting-improvements-in-web-server-nginx-to-get-rankaplus-from-ssl-server-test/

        ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS:!DH";

最後に!DHを追加しただけです。
これだけでAになりました。
SS 2017-11-03 16.58.57.png

        ssl_ciphers "ALL:!DSS:!DH";

この時になって前のごちゃごちゃはいらずにALLとすればいいことに気づきました。これでもAで通ります。
SS 2017-11-03 17.44.30.png
ただ、2つWEAKと文句を言われるので、これを無効にします。
名前指定の参考:https://www.openssl.org/docs/manmaster/man1/ciphers.html

        ssl_ciphers "ALL:!IDEA:!DSS:!DH";

A+にするにはどうすればいいか。
SS 2017-11-03 17.08.35.png
GitHub.comの評価を見てみると、評価点自体は変わらないものの、どうやら加点項目があるようです。
HPKPとHSTSを実装すれば良さそう。

HSTSはHTTPリクエストをHTTPSにしろと伝えてくれるものらしい。これを追加する。
追記:HSTSの解説: https://ja.wikipedia.org/wiki/HTTP_Strict_Transport_Security

        add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";

SS 2017-11-03 17.35.00.png
やった!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0