Accessing HTTPS Encrypted Sites with WebRequest
Problem:
In a program that retrieves content from user-provided URLs, an attempt to access HTTPS-encrypted content fails, resulting in an error.
Solution:
The problem arises from the default behavior of WebRequest, which validates SSL certificates and rejects connections to sites with invalid certificates. To allow your code to access HTTPS-encrypted content, regardless of certificate validity, you can disable certificate validation by using the following code before making the web request:
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
Definition of AcceptAllCertifications:
The AcceptAllCertifications method is defined as follows:
public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; }
By setting this callback, you instruct WebRequest to accept all certifications, effectively disabling certificate validation. This allows your program to access HTTPS-encrypted content even if the certifications are invalid.
The above is the detailed content of How Can I Access HTTPS Sites with Invalid Certificates Using WebRequest?. For more information, please follow other related articles on the PHP Chinese website!