カスタマイズされた .NET HTTPS リクエスト サーバー証明書検証コールバック
.NET Framework は、HTTPS 接続を確立するときにサーバー証明書の信頼性を検証します。ただし、場合によっては、このチェックをバイパスする必要がある場合があります。この記事では、特定の HTTPS リクエストの証明書検証を無視できるコールバック メソッドを実装する方法について説明します。
ServicePointManager.ServerCertificateValidationCallback について学習します
ServicePointManager.ServerCertificateValidationCallback
は、サーバーの証明書の検証を担当する関数を定義するデリゲートです。 .NET Framework は 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
を返すため、証明書のステータスに関係なく接続を確立できます。
コールバック位置
コールバック コードは、.NET Framework が HTTPS 接続を確立しようとするときに発生する ServicePointManager.ServerCertificateValidationCallback
が実行される前に配置する必要があります。コード例では、これは Stream stream = request.GetRequestStream();
行の前に配置することを意味します。
その他のオプション
リクエストごとの証明書検証には、次のようなラムダ式を使用できます。
<code class="language-csharp">request.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;</code>
このメソッドを使用すると、個々のリクエストの証明書検証をカスタマイズできます。あるいは、同じコールバックをグローバル フィルタに適用して、アプリケーションによって行われるすべての HTTPS 接続に対してそのコールバックを有効にすることもできます。
ServerCertificateValidationCallback
を実装すると、HTTPS リクエストの証明書検証をバイパスできるため、信頼できない証明書または無効な証明書を提供する可能性のあるサーバーに接続できます。
以上が.NET でカスタム サーバー証明書検証コールバックを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。