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。 这允许基于 SslStream FTP、HTTP 和 SMTP) 等 (的 .NET Framework 网络 API 从操作系统或系统管理员执行的任何自定义配置继承默认安全协议。 有关每个 Windows 操作系统版本默认启用的 SSL/TLS 协议的信息,请参阅 TLS/SSL (Schannel 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 和 RC4 服务的互操作性。 本文 介绍如何修改代码,以便禁用新行为。