發現 .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中文網其他相關文章!