发现 .NET HTTP 请求中协商的 TLS 版本
.NET 应用程序默认使用 TLS 1.2 进行 Web 请求。 但是,您可以使用下面描述的方法直接控制允许的协议并确定最终协商的 TLS 版本。
方法 1:通过 SslStream 利用 .NET 反射
检查从 TlsStream
或 HttpWebRequest.GetRequestStream()
获取的流的 HttpWebRequest.GetResponseStream()
属性。 使用反射来访问 SslState
对象并提取 SslProtocol
属性,显示协商的 TLS 版本。
方法 2:利用 .NET 安全上下文属性
QueryContextAttributesW
API(位于 secur32.dll
)允许检索连接安全上下文详细信息。 具体来说,检查 dwProtocol
结构中的 SecPkgContext_ConnectionInfo
成员来识别所使用的 SslProtocol。
方法 3:使用 TcpClient 的替代方案(仅服务器端验证)
此方法使用 TcpClient()
创建安全连接,并使用与 ServicePointManager
相同的设置验证服务器证书。 注意:如果您在发起网络请求之前需要TLS信息,则此方法不适合。
这些技术涉及反射或较低级别的 API。 始终预见异常并解决潜在的反射权限问题。
以上是如何确定 .NET HTTP 请求中使用的协商 TLS 版本?的详细内容。更多信息请关注PHP中文网其他相关文章!