軽減策:TLS プロトコル

.NET Framework 4.6 以降では、System.Net.ServicePointManager および System.Net.Security.SslStream クラスで Tls1.0、Tls1.1、または Tls 1.2 の 3 つのプロトコルのいずれかを使用できます。 SSL3.0 プロトコルと RC4 の暗号化はサポートされていません。

影響

この変更は、以下のものに影響を与えます。

  • SSL を使用して HttpClientHttpWebRequestFtpWebRequestSmtpClientSslStream のいずれかのタイプで 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"/>  
    

ただし、既定の動作を除外することは、アプリケーションの安全性を低下させるので推奨されません。

関連項目