.NET Framework 4.6 以降では、 System.Net.ServicePointManager クラスと System.Net.Security.SslStream クラスは、Tls1.0、Tls1.1、または Tls 1.2 の 3 つのプロトコルのいずれかを使用できます。 SSL3.0 プロトコルと RC4 の暗号化はサポートされていません。
インパクト
この変更は次の影響を受ける。
SSL を使用して HTTPS サーバーまたはソケット サーバーと通信するアプリは、 HttpClient、 HttpWebRequest、 FtpWebRequest、 SmtpClient、 SslStreamのいずれかの種類を使用します。
Tls1.0、Tls1.1、または Tls 1.2 をサポートするようにアップグレードできないサーバー側アプリ。
緩和策
推奨される軽減策は、sever-side アプリを Tls1.0、Tls1.1、または Tls 1.2 にアップグレードすることです。 これが現実的でない場合、またはクライアント アプリが破損している場合は、次の 2 つの方法のいずれかにより、AppContext クラスを使用してこの機能を除外できます。
プログラム的に、次のようなコードスニペットを使用して:
const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto"; AppContext.SetSwitch(DisableCachingName, true); AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true);
Const DisableCachingName As String = "TestSwitch.LocalAppContext.DisableCaching" Const DontEnableSchUseStrongCryptoName As String = "Switch.System.Net.DontEnableSchUseStrongCrypto" AppContext.SetSwitch(DisableCachingName, True) AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, True)
ServicePointManager オブジェクトは 1 回だけ初期化されるため、これらの互換性設定を定義することは、アプリケーションが最初に行う必要があります。
app.config ファイルの <runtime> セクションに次の行を追加します。
<AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/>
ただし、アプリケーションの安全性が低下するため、既定の動作をオプトアウトすることはお勧めしません。
こちらも参照ください
.NET