web-dev-qa-db-ja.com

nginxで設定するssl_protocolsおよびssl_ciphersを決定するにはどうすればよいですか?

最近ドメインにTLS(certbotを使用して暗号化)を追加しました。基本設定 options-ssl-nginx.conf 含む

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";

この部分は Mozillaが推奨するもの と同じです。

次に、ドメインを https://ssldecoder.org およびで確認しました。彼らは私のサーバーがTLSv1.3をサポートしていないと不平を言った

質問1:TLSv1.3がssl_protocolsにないのはなぜですか?それを追加しない理由はありますか?

https://www.ssllabs.com/ssltest で自分のサイトをチェックすると、サポートされているSSL暗号に関するいくつかの不満が表示されます。

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA

質問2:サポートする暗号をどのように決定すればよいですか?

サポートされる暗号が少ないと、サイトに到達できるデバイスが少なくなります。しかし、それがいくつになるかを判断する方法はありますか( csiの場合はcaniuse.com ですが、暗号の場合)。そして、これは優先順位であり、クライアントは引き続き好きな人を連れて行くことができます:なぜすべてをサポートする必要がないのですか?

3
Martin Thoma

暗号スイートの選択は、セキュリティと互換性の間の適切な妥協点でなければならないため、これに対する単一の正解はありません。構成ジェネレータにリンクされている Mozillaのサーバー側TLSガイドライン は、さまざまなプロファイルの目的を説明しています。

  • 現在の互換性。下位互換性を必要としないサービスの場合、以下のパラメーターはより高いレベルのセキュリティを提供します。この構成は、Firefox 27と互換性がありますChrome 30、IE 11 on Windows 7、Edge、Opera 17、Safari 9、Android 5.0、およびJava 8。

  • 中間互換性(デフォルト)。レガシークライアント(主にWinXP)との互換性は必要ないが、幅広いクライアントをサポートする必要があるサービスの場合、この構成をお勧めします。 Firefox 1、Chrome 1、IE 7、Opera 5およびSafari 1と互換性があります。

  • 古い下位互換性。これは、Windows XP/IE6に戻るすべてのクライアントで機能する古い暗号スイートです。最後の手段としてのみ使用してください。

これらの推奨事項にTLS 1.3を追加することは discussion の下で行われましたが、まだ追加されていません。この推論は、TLS 1.3が RFC 8446 で標準として提案される前の2016年からです。

jvehent投稿日:2016年12月27日

ここでは実験的なバージョンを推奨すべきではないと思います。ガイドラインに追加する前に、CHACHA20が標準化されるのを待ちました。TLS1.3にも同じことが当てはまります。

同様に、Qualys SSL Labsは SSLおよびTLS導入のベストプラクティス を公開しています。 (2019年6月現在)最終更新日は2017年5月なので、TLS 1.3については将来のプロトコルとしてのみ言及していますが、TLS 1.2より前の古いバージョンの問題についても説明しています。

TLS v1.2は、最新の認証された暗号化(AEADとも呼ばれます)を提供する唯一のバージョンであるため、メインプロトコルにする必要があります。現在TLS v1.2をサポートしていない場合、セキュリティが不足しています。

古いクライアントをサポートするために、TLS v1.0とTLS v1.1を今のところサポートし続ける必要があるかもしれません。ただし、近い将来にTLS v1.0を廃止することを計画する必要があります。たとえば、PCI DSS標準では、クレジットカード決済を受け入れるすべてのサイトで、2018年6月までにTLS v1.0のサポートを削除する必要があります。

TLS v1.3の設計作業は現在進行中であり、廃止された機能や安全でない機能をすべて削除し、今後数十年にわたって通信を安全に保つための改善を行うことを目的としています。

SSL Labs Server Testはより定期的に更新され、考えられるその他の弱点を指摘しています。

  • すべてのTLS_RSA暗号スイートは、転送秘密を提供しないため、WEAKとしてマークされています。将来、秘密キーが危険にさらされた場合、記録されたすべてのトラフィックは、それを使用して復号化できます。
  • Cipher Block ChainingCBCを利用するすべての暗号スイートは自動的に脆弱になるわけではありませんが、 パディングOracle攻撃 に対して脆弱な実装が多数あるため、マークすることにしましたそれらはすべてWEAKです。

2015年5月以降、ベストプラクティスRFC 7525もあります。 トランスポート層セキュリティ(TLS)およびデータグラムトランスポート層セキュリティ(DTLS)の安全な使用に関する推奨事項。その セクション4.2 は、Mozillaの最新の互換性とSSL Labs Server Testに類似した推奨事項を提供します。

前述の考慮事項を踏まえて、次の暗号スイートの実装と展開をお勧めします。

  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

これらの暗号スイートは、認証済み暗号化(AEAD)アルゴリズム[RFC5116]であるため、TLS 1.2でのみサポートされます。

これらすべてに基づいて、「Tweak to yourニーズ」などの最新のプロファイルで十分です。

  • cBCベースの暗号スイートをモダン互換性プロファイルから削除します。つまり、ECDHE-ECDSA-AES256-SHA384ECDHE-RSA-AES256-SHA384ECDHE-ECDSA-AES128-SHA256ECDHE-RSA-AES128-SHA256を削除します
  • キーの長さが少なくとも2048ビットで、GCMモードを使用する限り、DHE暗号スイートを追加します:DHE-RSA-AES256-GCM-SHA384DHE-RSA-AES128-GCM-SHA256

SSL Labs Server Testのハンドシェイクシミュレーションセクションは、構成がサポートしていないブラウザーを指摘するのに役立ちます。それらをサポートすることが重要かどうかを判断し、そのブラウザで使用できる最も強力な暗号スイートを追加するのはあなた次第です。

TLS 1.3の実装に関するMozillaの推奨を待つかどうかも、意見に基づいています。 TLS 1.3では、すべてのレガシーアルゴリズムのサポートが完全に削除されており、不正な暗号スイートを選択することが難しくなっています。 From RFC 8446、1.2。TLS 1.2との主な違い

サポートされている対称暗号化アルゴリズムのリストには、レガシーと見なされるすべてのアルゴリズムが含まれていません。残っているのは、すべてAuthenticated Encryption with Associated Data(AEAD)アルゴリズムです。暗号スイートの概念が変更され、認証と鍵交換のメカニズムが、レコード保護アルゴリズム(秘密鍵の長さを含む)と、鍵導出関数とハンドシェイクメッセージ認証コード(MAC)の両方で使用されるハッシュから分離されました。

4
Esa Jokinen