.NET での SSL 証明書検証のオーバーライド
この記事では、ServicePointManager.ServerCertificateValidationCallback
デリゲートと、それが .NET アプリケーションで SSL 証明書の検証を処理する方法について説明します。
ServicePointManager.ServerCertificateValidationCallback
通常、HTTPS リクエストを行うとき、クライアントはサーバーの SSL 証明書を検証します。 ServicePointManager.ServerCertificateValidationCallback
は、この検証をカスタマイズする方法を提供します。これは 4 つの引数を受け取るデリゲートです:
obj
: リクエストを開始するオブジェクト。certificate
: サーバーの X509 証明書。chain
: 証明書の信頼チェーン。errors
: SSL ポリシー エラーが検出されました。デリゲートの呼び出しタイミング
デリゲートは、.NET Framework の SSL 証明書検証プロセス中に、データが交換される前に呼び出されます。
実際の応用: 証明書の検証の無視
一般的な使用法 (潜在的にリスクはありますが) は、証明書の検証を完全に無視することです。 これは、コールバックから常に true
を返すことで実現されます。 これは、クライアントがその有効性に関係なく、あらゆる証明書を受け入れることを意味します。
実装例 (ラムダ式を使用)
最新の .NET バージョン (4.5 以降) では、ラムダ式を使用してコールバックが簡素化されています。
<code class="language-csharp">ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;</code>
コードの配置
重要なことに、このコードは、HTTPS 接続を確立する前 (たとえば、GetRequestStream()
を呼び出す前) に実行する必要があります。
セキュリティに関する考慮事項
SSL 証明書の検証を無効にすると、セキュリティが大幅に危険にさらされます。 この手法は、セキュリティへの影響を慎重に考慮した上で、絶対に必要な場合にのみ使用してください。 サーバーの証明書とセキュリティの実践を完全に制御および理解していない限り、実稼働環境ではこのアプローチは避けてください。
以上がServicePointManager.ServerCertificateValidationCallback は SSL 証明書の検証をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。