Qualys SSL LabsでスコアAがとれるnginxのTLS/SSLの設定方法

f:id:Morikuma:20150407142617j:plain

この記事は

この記事は、2015/4/7現在、Qualys SSL LabsでスコアAがとれる、nginxのTLS/SSLの設定方法について説明するものです。
TLS/SSLと書いていますが、後述しますがSSLは使用しません。
また、TLS/SSLとはなにか、といった話題については触れません。細かい解説もしません。細かい解説は参考文献を参照してください。

具体的なconfファイルの記述例

server {
  listen 443 ssl;

  #実際の設定方法に合わせる
  server_name localhost;

  #nginxのバージョンを表示しないようにする
  server_tokens off;

  ssl on;

  #中間証明書とbindingしたものを指定する
  ssl_certificate /path/to/server.crt;

  #openssl req -nodes -newkey rsa:2048 -keyout YOURDOMAIN.key -out YOURDOMAIN.csr こんなかんじでkeyとcsrを作成した
  ssl_certificate_key /path/to/server.key;

  #SSLセッションを10分保持する
  ssl_session_cache builtin:1000 shared:SSL:10m;

  #もうSSLはv3も含めて使わない
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

  #古いcipherは使わない
  ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED';

  #ブラウザ側にcipherを選ばせないようにする
  ssl_prefer_server_ciphers on;

  #2048bitで生成したPFS cipherを使用する
  ssl_dhparam /path/to/pfs2048.pem;

  location / {
    #書きたいことを書く
  }
}

注意

上記設定を行うと、IE6とJava1.6に影響が出ます。出ますが…古いしきっと誰も使っていないでしょう。

次のステップ

HSTSを有効にすべき

add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;'

それ用のヘッダを差し込むようにすればできる。 これでスコアA+を獲得することが可能。

参考文献

Qualys SSL Labs - Projects / SSL/TLS Deployment Best Practices