Wie verwende ich WebRequest eine SSL-verschlüsselte Website über https zugreifen?
-
05-09-2019 - |
Frage
Ich schreibe ein Programm, das Inhalt von einem Benutzer bereitgestellte URL liest. Mein Problem ist in dem Code, der etwas geht:
Uri uri = new Uri(url);
WebRequest webRequest = WebRequest.Create(uri);
WebResponse webResponse = webRequest.GetResponse();
ReadFrom(webResponse.GetResponseStream());
Und das bricht, wenn die zur Verfügung gestellt url ist ein "https: //" URL. Kann mir jemand helfen, diesen Code mit ändern, dass er mit SSL verschlüsseltem Inhalt zu arbeiten. Danke.
Lösung
Sie tun es dem richtigen Weg, aber die Benutzer können URLs zu Websites zur Verfügung stellen, die ungültigen SSL-Zertifikate installiert haben. Sie können diese cert Probleme ignorieren, wenn Sie in dieser Zeile setzen, bevor Sie die eigentliche Web-Anfrage zu machen:
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
Dabei gilt AcceptAllCertifications
als
public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true;
}
Andere Tipps
Dieser Link wird für Sie von Interesse sein: http://msdn.microsoft .com / en-us / library / ds8bxk2a.aspx
Für HTTP-Verbindungen, die Klassen WebRequest und WebResponse verwenden SSL mit Internet-Hosts zu kommunizieren, die SSL unterstützen. Die Entscheidung, die Verwendung von SSL wird von der WebRequest-Klasse gemacht, basierend auf dem URI es gegeben ist. Wenn die URI mit „https:“ beginnt, wird SSL verwendet wird; wenn die URI mit „http:“ beginnt., eine unverschlüsselte Verbindung verwendet wird
Dieser arbeitete für mich:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;