ServicePointManager.SecurityProtocol 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定由 ServicePointManager 物件管理的 ServicePoint 物件所使用的安全性通訊協定。
public:
static property System::Net::SecurityProtocolType SecurityProtocol { System::Net::SecurityProtocolType get(); void set(System::Net::SecurityProtocolType value); };
public static System.Net.SecurityProtocolType SecurityProtocol { get; set; }
static member SecurityProtocol : System.Net.SecurityProtocolType with get, set
Public Shared Property SecurityProtocol As SecurityProtocolType
屬性值
SecurityProtocolType 列舉型別中定義的一個值。
例外狀況
指定用來設定屬性的值不是一個有效的 SecurityProtocolType 列舉值。
備註
此屬性會選取要用於新連線的安全套接字層 (SSL) 或傳輸層安全性 (TLS) 通訊協定的版本;現有的連線不會變更。
從 .NET Framework 4.7 開始,此屬性的預設值為 SecurityProtocolType.SystemDefault。 這可讓 .NET Framework 網路 API 根據 SslStream (,例如 FTP、HTTP 和 SMTP) ,從操作系統或系統管理員執行的任何自定義組態繼承預設安全性通訊協定。 如需每個 Windows 作業系統版本預設啟用哪些 SSL/TLS 通訊協定的資訊,請參閱 TLS/SSL (SSP 中的 通訊協定) 。
針對透過 .NET Framework 4.6.2 的 .NET Framework 版本,此屬性不會列出任何預設值。 安全性環境會不斷變更,而預設通訊協定和保護層級會隨著時間而變更,以避免已知的弱點。 預設值會根據個別計算機設定、已安裝的軟體和套用的修補程式而有所不同。
您的程式代碼絕對不應該隱含地相依於使用特定保護層級,或假設預設會使用指定的安全性層級。 如果您的應用程式需要使用特定的安全性層級,您必須明確地指定層級,並確定它實際上已在建立的連線中使用。 此外,您的程式代碼應該設計為在支援通訊協議的變更時保持強固,因為這類變更通常不會事先通知,以減輕新興威脅。
.NET Framework 4.6 包含新的安全性功能,可封鎖連線不安全的加密和哈希演算法。 透過 HTTPClient、HttpWebRequest、FTPClient、SmtpClient、SslStream 等 API 使用 TLS/SSL 的應用程式,以及以 .NET Framework 4.6 為目標的應用程式預設會取得更安全的行為。
開發人員可能會想要退出此行為,以維持其現有 SSL3 服務或 TLS w/ RC4 服務的互操作性。 本文 說明如何修改程序代碼,以便停用新的行為。