までをサポートするサーバーと通信するためのデフォルトのセキュリティ プロトコルは何ですかTLS 1.2
?.NET
デフォルトでは、サーバー側でサポートされている最高のセキュリティ プロトコルが選択されますか、それとも次のコード行を明示的に追加する必要がありますか:
System.Net.ServicePointManager.SecurityProtocol =
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
コードを変更する以外に、このデフォルトを変更する方法はありますか?
最後に、.NET 4.0
までしかサポートされないのでしょうかTLS 1.0
? つまり、 をサポートするには、クライアント プロジェクトを 4.5 にアップグレードする必要がありますTLS 1.2
。
私の動機は、SSLv3
サーバーがサポートしている場合でもクライアント側でのサポートを削除し (マシン レジストリでこれを無効にする PowerShell スクリプトが既にあります)、サーバーがサポートする最高の TLS プロトコルをサポートすることです。
更新:ServicePointManager
のクラスを見ると、と.NET 4.0
の列挙値が見つかりません。 の両方とも、デフォルトは です。レジストリで無効にしてもこのデフォルトが壊れないことを願います。TLS 1.0
1.1
.NET 4.0/4.5
SecurityProtocolType.Tls|SecurityProtocolType.Ssl3
SSLv3
.NET 4.5
ただし、すべてのアプリを にアップグレードし、SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
すべてのアプリケーションのすべてのブートストラップ コードに明示的に追加する必要があると判断しました。
これにより、さまざまな API およびサービスへの送信要求がダウングレードされなくなりSSLv3
、最高レベルの を選択する必要がありますTLS
。
このアプローチは合理的でしょうか、それともやりすぎでしょうか? 更新するアプリケーションが多数あり、TLS 1.0
近い将来に一部のプロバイダーによって廃止される可能性もあると聞いているため、将来に備えてアプリケーションを準備しておきたいと考えています。
API へのアウトバウンド リクエストを行うクライアントとして、レジストリで SSL3 を無効にすると、.NET フレームワークに影響しますか? デフォルトでは、TLS 1.1 と 1.2 は有効になっていないようですが、レジストリで有効にする必要がありますか? REhttp://support.microsoft.com/kb/245030。
少し調べたところ、レジストリ設定は IIS (サーバー サブキー) とブラウザー (クライアント サブキー) に適用されるため、影響はないと思われます。
申し訳ありませんが、この投稿は複数の質問になり、「おそらく」という回答が続きます。
ベストアンサー1
他の回答にコメントを残した人の中には、System.Net.ServicePointManager.SecurityProtocol
特定の値に設定すると、.NET の将来の更新で既定値になる可能性のある将来の TLS バージョンをアプリが利用できなくなると指摘した人もいます。プロトコルの固定リストを指定する代わりに、次の操作を行います。
.NET 4.7 以降の場合は、を設定しないでくださいSystem.Net.ServicePointManager.SecurityProtocol
。既定値 ( SecurityProtocolType.SystemDefault
) では、オペレーティング システムは、アプリの作成時に存在していなかった可能性のある新しいバージョンも含め、認識され構成されているすべてのバージョンを使用できます。
.NET Framework の以前のバージョンでは、代わりに、知っている重要なプロトコルをオンまたはオフにして、他のプロトコルはそのままにしておくことができます。
他のプロトコルに影響を与えずに TLS 1.1 および 1.2 を有効にするには:
System.Net.ServicePointManager.SecurityProtocol |=
SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
|=
他のフラグをオフにせずにこれらのフラグをオンにするには、を使用していることに注意してください。
他のプロトコルに影響を与えずに SSL3 をオフにするには:
System.Net.ServicePointManager.SecurityProtocol &= ~SecurityProtocolType.Ssl3;