Qualys SSL Labs でサイトの安全性を A+ にした時の対応内容

Qualys SSL Labs で評価 A+ 技術ネタ

サイトの安全性を高めるため、Qualys SSL Labs で A+ を取るまで頑張ってみました。



KUSANAGIはほぼ初期状態でも評価はA

KUSANAGI for さくらVPS(nginx)にSSL証明書を導入した状態で、Qualys SSL Labs で評価してみましたが、このほとんど初期の状態でも評価A となりました。KUSANAGIは最初から安全性を考慮しているようですね。ありがたい。

ほぼ初期状態で指摘される内容

これが改善する前に評価結果です。
見ていただくとわかる通り、評価はA ですが、指摘されている項目はたくさんあります。

Qualys SSL Labsの改善前指摘内容※評価結果の情報量が多いため、この後に改善した項目のみ表示しています。

改善したこと

基本的な対応は Nginx の confファイルの変更となり、詳細は以下の通りとなります。
※DNS CAA を除く

Protocols

変更前ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
変更後ssl_protocols TLSv1.1 TLSv1.2;

Ciphers

変更前ssl_ciphers “EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4″;
変更後ssl_ciphers “EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!RSA“;

OCSP Stapling

変更前(なし)
変更後ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate {ルート証明書ファイル名}
ルート証明書
導入しているSSL証明書発行機関に従ってください。本サイトは JPRS で証明書を発行しているため ここ からダウンロードしました。

HSTS

変更前(なし)
変更後add_header Strict-Transport-Security ‘max-age=31536000; includeSubDomains;preload’;
add_headerを追加する場所
理由はわかりませんが、server ブロックに追加してもヘッダがセットされませんでした。
KUSANAGIでは既にlocationブロック内にこの定義がコメントされた状態で記述されていますので、その箇所のコメントを解除(または追加)することでヘッダが正しくセットされます。

DNS CAA

この対応は「DNS CAA」でググるとたくさん出てきますので、詳細はそちらを参照ください。といっても、DNS CAAレコードを追加するだけですが。
以下に、当サイトの設定したDNSレコードを貼り付けておきますので、参考にしてください。

DNS CAA

レコードの内容はSSL証明書発行機関に従う
先程も書いたとおり、当サイトは JPRS のSSL証明書を導入しています。上の結果画像はそれを前提した設定になっているため、必要に応じて各サイトにあったレコードに書き換えてください。

改善後の結果

上記5点を対応し、再度、Qualys SSL Labs で評価してもらうと、無事に 評価 A+ となり安全性が高まり満足しています。
また、現状では TLS1.1 を有効にしていますが、いずれは無効にしようと思っています。

自サイトのSSLの安全性を高めたいと思っている方がいれば、参考していただければと思います。