WebRequest を使用して HTTPS 経由で SSL 暗号化コンテンツにプログラム的にアクセスする
WebRequest 経由で URL を操作する場合、SSL 暗号化が原因で問題が発生することは珍しくありません。この記事は、このような課題を克服するソリューションを提供することを目的としています。
指定されたコード スニペットは URL からコンテンツを取得しようとしますが、URL が HTTPS プロトコルを使用している場合にエラーが発生します。この状況に対処するには、SSL 暗号化コンテンツに対応できるようにコードを調整することが不可欠です。
重要な解決策は、SSL 証明書の検証を処理できるデリゲートである ServicePointManager.ServerCertificateValidationCallback を導入することにあります。デフォルトの動作をオーバーライドすることで、無効な可能性のある証明書を含むすべての証明書を受け入れるようにコードに指示できます。
これを実現するには、Web リクエストを行う前に次の行を追加します。
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
次に、true を返す AcceptAllCertifications という単純なメソッドを作成します。
public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; }
これらの変更により、コードは次のようになります。証明書の有効性に関係なく、HTTPS 暗号化を使用する URL にアクセスしてコンテンツを読み取ることができます。
以上がSSL エラーにもかかわらず、WebRequest を使用してプログラムで HTTPS コンテンツにアクセスする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。