自訂 .NET HTTPS 請求伺服器憑證驗證回呼
.NET 框架在建立 HTTPS 連線時會驗證伺服器憑證的真實性。但在某些情況下,可能需要繞過此檢查。本文探討如何實作一個回呼方法,讓您忽略特定 HTTPS 要求的憑證驗證。
了解 ServicePointManager.ServerCertificateValidationCallback
ServicePointManager.ServerCertificateValidationCallback
是一個委託,它定義了一個負責驗證伺服器憑證的函數。當 .NET 框架建立 HTTPS 連線時,它會呼叫此回呼方法來驗證憑證。此方法採用以下參數:
obj
:提供伺服器憑證驗證的上下文。 certificate
:伺服器提供的 X.509 憑證。 chain
:用於建立信任關係的 X.509 憑證鏈。 errors
:表示遇到的任何 SSL 策略錯誤的枚舉。 實作方法
範例程式碼中,回調定義如下:
<code class="language-csharp">ServicePointManager.ServerCertificateValidationCallback = delegate( Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; };</code>
此回呼有效地忽略所有憑證檢查並無條件返回 true
,允許建立連接,而不管憑證狀態如何。
回呼位置
回呼程式碼應在執行 ServicePointManager.ServerCertificateValidationCallback
之前放置,這發生在 .NET 框架嘗試建立 HTTPS 連線時。在範例程式碼中,這表示將其放在 Stream stream = request.GetRequestStream();
行之前。
其他選項
對於每個要求的憑證驗證,您可以使用 lambda 表達式,如下所示:
<code class="language-csharp">request.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;</code>
此方法可讓您自訂單一要求的憑證驗證。或者,您可以將相同的回調套用至全域過濾器,從而為應用程式進行的所有 HTTPS 連線啟用它。
透過實作 ServerCertificateValidationCallback
,您可以繞過 HTTPS 要求的憑證驗證,從而連接到可能提供不受信任或無效憑證的伺服器。
以上是如何在.NET中實作自訂伺服器憑證驗證回呼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!