次の方法で共有


軽減策: TLS プロトコル

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

インパクト

この変更は次の影響を受ける。

  • SSL を使用して HTTPS サーバーまたはソケット サーバーと通信するアプリは、 HttpClientHttpWebRequestFtpWebRequestSmtpClientSslStreamのいずれかの種類を使用します。

  • 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"/>  
    

ただし、アプリケーションの安全性が低下するため、既定の動作をオプトアウトすることはお勧めしません。

こちらも参照ください