狀況

假設您已經在您的電腦上升級到 Microsoft.NET Framework 4.6。當您使用連線到伺服器使用 SSL 3.0 與ServicePointManager或SslStream Api 的應用程式時,連線就會失敗。

原因

因為 SSL/TLS 通訊協定的預設集合所使用的ServicePointManager和SslStream已變更,就會發生這個問題。

舊值︰ Ssl 3.0 |Tls 1.0 |Tls 1.1


新的值︰ Tls 1.0 |Tls 1.1 |Tls 1.2

因應措施

若要解決這個問題,更新伺服器 Tls 1.0、 Tls 1.1 或 Tls 1.2,因為 SSL 3.0 已顯示為不安全且容易遭受攻擊,例如 POODLE。

注意如果您無法更新伺服器,請選擇這項功能不使用AppContext類別。若要這樣做,請使用下列其中一種方法:

  • 以程式設計的方式︰ 必須是應用程式做,因為ServicePointManager就初始化一次的第一件事。應用程式中使用下列的程式碼範例︰

    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


需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

您對翻譯品質的滿意度為何?
以下何者是您會在意的事項?

感謝您的意見反應!

×