現象
コンピューターに Microsoft.NET Framework 4.6 にアップグレードすることを想定しています。ServicePointManagerまたはSslStream Api との SSL 3.0 を使用してサーバーに接続するアプリケーションを使用する場合、接続は失敗します。
原因
ServicePointManagerとSslStreamによって使用される SSL や TLS プロトコルの既定のセットが変更されたために、この問題が発生します。
古い値: Ssl 3.0 |Tls 1.0 |Tls 1.1
新しい値: Tls 1.0 |Tls 1.1 |Tls 1.2
回避策
この問題を回避するには、セキュリティ保護されていない、POODLE などの攻撃に対する脆弱性が SSL 3.0 が表示されたため Tls 1.0、Tls 1.1 または Tls 1.2 にサーバーを更新します。
注: サーバーを更新することはできません、する場合は、この機能を無効にするAppContextクラスを使用します。これを行うには、次の方法のいずれかの手順に従います。
-
ServicePointManagerを 1 回だけ初期化されるため、アプリケーションでは非常に最初にプログラムを使用して: する必要があります。アプリケーションで次のコード例を使用します。
private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
AppContext.SetSwitch(DisableCachingName, true);
AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true); -
AppConfig ファイルを使用して、アプリケーションの: Appconfig ファイルに次の行を追加します。
< AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/ >
.NET Framework の 4.6 では、既知の問題に関する詳細については、既知の問題については、.NET Framework の 4.6を参照してください。
詳細
製品のバージョン管理の変更と.NET Framework の 4.6 に影響する方法の詳細については、 .NET Framework の 4.6 におけるアプリケーションの互換性を参照してください。
注:
-
新しい構成は、アプリケーションが.NET Framework の 4.6 を対象とする場合にのみ適用されます。.NET Framework 4.5.2 と以前のバージョンを受けない場合でも、.NET Framework 4.6 環境で実行します。
-
影響を受ける最上位の Api のリストです。
-
HttpClient、HttpWebRequest
-
FtpClient
-
SmtpClient
-
SslStream
-
-
SCH_USE_STRONG_CRYPTOこのフラグは、.NET Framework の 4.6 に自動的に使用する予定が、安全ではない暗号化アルゴリズムとハッシュ アルゴリズムを削除することによって動作に影響します。すべてのオペレーティング システム プラットフォームの Windows の 10 より前のRC4アルゴリズムから削除されます使用します。Windows 10 では、次の他の安全でないアルゴリズムを削除する: DES、 NULL、エクスポートおよびMD5