LoginSignup
1

More than 5 years have passed since last update.

SSL SERVER TESTで A+の評価をとる

Posted at

WebサイトのSSLの安全性の評価ツールであるSSL SERVER TESTでA+の評価が取れたので、残しておきたいと思います。

環境

CentOS 7.5
Nginx 1.5.1
証明書はLet’s Encryptにて取得しています。
上記環境でのLet’s Encryptの証明書取得に関してはこちらで記事にしています。

nginxのconfファイルに追加したもの

/etc/nginx/conf.d/***.conf
server {
  (略)
  ssl_protocols TLSv1.2;
  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE- 
ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
  ssl_prefer_server_ciphers on;

  ssl_session_cache shared:SSL:50m;
  ssl_session_timeout 1d;

  ssl_stapling on;
  ssl_stapling_verify on;
  resolver 8.8.8.8 8.8.4.4 valid=300s;
  ssl_trusted_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
  # www.example.comはそれぞれのドメインに変更してください。
  add_header Strict-Transport-Security 'max-age=63072000; includeSubDomains; preload;';
  (略)
}
ディレクディブ 概要
ssl_protocols SSL/TLSプロトコルを指定する
ssl_ciphers 暗号化スイートリストの指定
ssl_prefer_server_ciphers サーバー側で設定した暗号化スイートリストを使用するか on/off
ssl_session_cache セッションキャッシュを設定する on/off
ssl_session_timeout セッションキャッシュの有効期限を設定する
ssl_stapling OCSP Staplingを設定する on/off
ssl_stapling_verify OSCPの問い合わせ結果の検証を設定する on/off
resolver 名前解決の際に利用するDNSサーバを指定する
ssl_trusted_certificate OCSPの問い合わせに利用するCA証明書を指定する。

暗号化スイートリストとは

暗号スイート

HTTPSには鍵認証(),鍵交換(),メッセージ認証符号(),共通鍵暗号化()といったものがあり、それぞれプロトコルの選択が可能です。これの組み合わせを暗号化スイートと呼びます。
以下コマンドで確認できます。

$ openssl ciphers -v
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA384
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA384
ECDHE-RSA-AES256-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA1
ECDHE-ECDSA-AES256-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA1
DH-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH/DSS   Au=DH   Enc=AESGCM(256) Mac=AEAD
DHE-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH       Au=DSS  Enc=AESGCM(256) Mac=AEAD
DH-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH/RSA   Au=DH   Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(256) Mac=AEAD
(略)

暗号化スイートリスト

優先度が高い順番で暗号化スイートを並べ、

OCSP Staplingとは

OCSP

HTTPS通信では、サーバー証明書の有効/失効を証明書失効リスト(CRL)を用いていました。しかし、失効リストの更新には即時性の点で問題があります。こちらの解決策としてOCSPではCRLでの有効性の確認の代わりにOCSPレスポンダに証明書の有効性を確認します。

OCSP Stapling

通常はクライアントがOCSPレスポンダに問い合わせをしますが、OCSP StaplingはOCSPレスポンダからの問い合わせ結果をサーバーにキャッシュすることで、クライアントはOCSPレスポンダへの問い合わせの必要がなくなり、より短時間で証明書の有効性を確認することができます。

おまけ

Nginxのconfigを自動生成できます。
https://nginxconfig.io/

参考

OCSP Stapling
理解してるつもりの SSL/TLS でも、もっと理解したら面白かった話
Let’s EncryptとNginx : セキュアなWebデプロイメントの現状
NginxでHTTPS:ゼロから始めてSSLの評価をA+にするまで Part 2 – 設定、Ciphersuite、パフォーマンス

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
What you can do with signing up
1