軽減策:TLS プロトコル
.NET Framework 4.6 以降では、System.Net.ServicePointManager および System.Net.Security.SslStream クラスで Tls1.0、Tls1.1、または Tls 1.2 の 3 つのプロトコルのいずれかを使用できます。 SSL3.0 プロトコルと RC4 の暗号化はサポートされていません。
影響
この変更は、以下のものに影響を与えます。
SSL を使用して HttpClient、HttpWebRequest、FtpWebRequest、SmtpClient、SslStream のいずれかのタイプで HTTPS サーバーまたはソケット サーバーと対話するすべてのアプリ。
Tls1.0、Tls1.1、または Tls 1.2 をサポートするためにアップグレードできない、すべてのサーバー サイド アプリ。
軽減策
推奨される軽減策はサーバー側のアプリを 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