Comment puis-je utiliser WebRequest pour accéder à un site crypté SSL à l'aide https?

StackOverflow https://stackoverflow.com/questions/560804

  •  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.

Était-ce utile?

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);

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top