首頁 >後端開發 >C++ >如何在.NET中實作自訂伺服器憑證驗證回呼?

如何在.NET中實作自訂伺服器憑證驗證回呼?

Linda Hamilton
Linda Hamilton原創
2025-01-15 19:17:44378瀏覽

How to Implement a Custom Server Certificate Validation Callback in .NET?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn