EC2/nginxとLet’s Encrpytで、www.ssllabs.comのRating Aを取得する設定

はじめに

  • こちらの記事は2018/06/09に記載しました。
  • 現時点で、EC2標準のyumでnginxをインストールした場合、v1.12.1がインストールされます。
  • nginx v1.12.1では、TLS1.3は未サポートです。このため、TLSは1.2を利用しています。
  • Let’s EncryptはNetOwlさんにて証明書などを作成しています。

 

なんでこんなことを?

普通にググって設定したnginxを利用したサイトを、www.ssllabs.comで調べたところ、RatingがCとなりました。。このため、一応もうちょっとRatingをあげるには?と思い上記日付時点で設定を見直したので、メモとして残しておきます。

 

設定

Rating Aとなった、nginxの設定ファイルはこんな感じになります。

server {
  listen 443 ssl;
  ssl on;
  
  # SSL証明書 + 中間証明書を繋げたファイル
  ssl_certificate /etc/nginx/sslfiles/CERTIFICATE.cert;

  # 秘密鍵
  ssl_certificate_key /etc/nginx/sslfiles/CERTIFICATE.key;
  ssl_session_timeout 5m;

  # TLSv1.2を明記+SSLv3, SSLv2は消す
  ssl_protocols  TLSv1.2 TLSv1;
  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers   on;
  :
  :
}

  • ダウンロードしSSL証明書と中間証明書をを繋げたファイルを作成して、ssl_certificateに設定する
  • TLSv1.2を明記する。明記しないと、1.2が優先的に利用されない。記載順は問題ないようですが、一応先頭にしておきました。
  • SSLv3は逆に消す。ssllabsのRatingではSSLv3が入っていると、POODLE attackの影響を受けるという理由で評価されません。
  • SSLv2は入っていても、入っていなくてもRatingはAです。が、SSLv3消してるので、ついでにSSLv2も消しています。

さらに、nginxのバージョンをv1.13以上にするとTLSv1.3にも対応できるっぽいのですが、、それはまた時間を見つけてやろうと思います。