Comment puis-je utiliser WebRequest pour accéder à un site crypté SSL à l'aide https?
-
05-09-2019 - |
Question
J'écris un programme qui lit le contenu à partir d'une URL fournie par l'utilisateur. Mon problème est dans le code qui ressemble à ceci:
Uri uri = new Uri(url);
WebRequest webRequest = WebRequest.Create(uri);
WebResponse webResponse = webRequest.GetResponse();
ReadFrom(webResponse.GetResponseStream());
Et cela se brise si la condition url est un "https: //" URL. Quelqu'un peut-il me aider à changer ce code afin qu'il fonctionne avec SSL contenu crypté. Merci.
La solution
Vous ce faire la bonne façon, mais les utilisateurs peuvent offrir des urls vers des sites qui ont invalides certificats SSL installés. Vous pouvez ignorer ces problèmes cert si vous mettez cette ligne avant de faire la demande Web réelle:
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
où AcceptAllCertifications
est défini comme étant
public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true;
}
Autres conseils
Ce lien sera vous intéresser: http://msdn.microsoft .com / fr-fr / bibliothèque / ds8bxk2a.aspx
Pour les connexions http, les WebRequest et les classes WebResponse utilisent SSL pour communiquer avec les hébergeurs qui prennent en charge SSL. La décision d'utiliser SSL est faite par la classe WebRequest, en fonction de l'URI est donné. Si l'URI commence par « https: », SSL est utilisé; si l'URI commence par « http: »., est utilisé une connexion non chiffrée
Celui-ci a fonctionné pour moi:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;