C# HTTPS リクエストでの SSL 証明書検証のバイパス
この記事では、C# で HTTPS リクエストを行うときに SSL 証明書の検証を抑制する方法について詳しく説明します。 これは ServicePointManager.ServerCertificateValidationCallback
デリゲートを使用して実現され、SSL 証明書エラーのカスタム処理が可能になります。
ServicePointManager.ServerCertificateValidationCallback
ServicePointManager.ServerCertificateValidationCallback
デリゲートは、HTTPS 接続の確立中にトリガーされます。 4 つの引数を受け取ります:
sender
: 元の HttpWebRequest
オブジェクト。certificate
: サーバーが提示した X.509 証明書。chain
: サーバーの X.509 証明書チェーン。errors
: 検証中に SSL ポリシー エラーが発生しました。ServicePointManager.ServerCertificateValidationCallback
の仕組み
このデリゲートは、TLS ハンドシェイクと証明書の検証の前に実行されます。 その戻り値によって、接続が続行されるかどうかが決まります。
オーバーライドの正しい配置
オーバーライドは、HTTPS リクエストが行われる前に実装する必要があります。 これにより、接続の開始時に確実にアクティブになります。
ラムダ式の例
簡潔なメソッドではラムダ式を使用します。
<code class="language-csharp">ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => { return true; // Accept all certificates };</code>
重要な考慮事項
true
を返し、事実上すべての証明書エラーを無視します。 通常、これは重大なセキュリティ リスクがあるため、実稼働環境には推奨されません。
HttpWebRequest.PreAuthenticate
に設定することは、通常、証明書の検証には必要ありません。true
以上がC# HTTPS リクエストで SSL 証明書の検証をオーバーライドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。