HttpRequest mit HTTPS

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von mnemonik.

    HttpRequest mit HTTPS

    Hey,

    ganz kurze Frage.
    Seit meine Website über HTTPS läuft, funktioniert mein Programm, welches über PHP mit meiner Seite kommuniziert nicht mehr.
    Bekomme immer folgenden Error:

    Die Anfrage wurde abgebrochen: Es konnte kein geschützter SSL/TLS-Kanal erstellt werden..


    Dies ist der Originalcode:

    Quellcode

    1. Public Function IsUserPremium(ByVal User As String) As Boolean
    2. Dim client As New Net.WebClient
    3. Dim Post = client.DownloadString("https://www.meinedomain.net/API.php?type=ispremium&parameter=" & User)
    4. If Post = "Expired or not premium" Then
    5. Return False
    6. End If
    7. If Post = "Premium" Then
    8. Return True
    9. End If
    10. End Function


    Dies meine andere Funktion um Requests zu senden:

    Quellcode

    1. Public Function SendRequest(ByVal Type As String, ByVal Parameter As String)
    2. Try
    3. Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(New System.Uri("https://meinedomain.net/API.php?type=" & Type & "&parameter=" & Parameter))
    4. request.Method = System.Net.WebRequestMethods.Http.Get
    5. Dim response As System.Net.HttpWebResponse = request.GetResponse()
    6. response.Close()
    7. Catch
    8. End Try
    9. End Function


    Kriege bei beiden diesen Error. Habe also mit dem Webclient und den Requests Probleme.
    Habe etwas im Internet gesucht und folgende "Lösung gefunden":

    Quellcode

    1. Private Function ValidateCertificate(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As Security.SslPolicyErrors) As Boolean
    2. Return True
    3. End Function
    4. ServicePointManager.ServerCertificateValidationCallback = AddressOf ValidateCertificate
    5. client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0")


    Ändert leider nichts Am Error.
    Wie fixe ich das?

    Danke :)
    Lg

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Das hatte ich vergessen zu erwähnen, denn das habe ich schon probiert..
    Habe jetzt übergangsweise https für die php Datei deaktiviert, die wird eh nur von der Konsole angesprochen, nicht von der Website, aber naja..

    Vollzitat entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Hallo, Leute!
    Möchte gerne wieder das Thema erfrischen, da ich dasselbe Problem habe. Beim Zugrief auf manche Webseiten (nicht allen) um Quellcode zu bekommen , erscheint solcher Fehler wie oben beschrieben:

    Die Anfrage wurde abgebrochen: Es konnte kein geschützter SSL/TLS-Kanal erstellt werden.

    Was ich schon versucht habe:
    - letzte VS 2019 instaliert
    - alle Frameworks instaliert und das Projekt drauf umgestellt
    - IE erlaubt TLS 1.1 und 1.2 zu nutzen
    - Funktioniert auf Windows 10 und 7 nicht | in Visual Studio 2010 und 2019 nicht
    - die Zeile "ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12" einzufügen hilft auch nicht
    - Download über "WebClient" geht bei diesen Webseiten auch nicht

    Kann mir jemand da weiter helfen, danke!
    Bist du dir denn sicher das die Gegenstelle/der Server TLS1.2 unterstützt?
    Mit der Zeile ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 setzt du das deine Anwendung NUR TLS1.2 spricht.
    Mit |= kannst du andere Versionen hinzufügen: System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

    Vergiss den letzten Teil, VB.Net kann wohl kein Or assignment operator, du könntest es mit System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 probieren.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „slice“ ()

    slice , leider haben die code-Zeilen mir nicht geholfen.

    Jetzt habe ich einwenig den Code verändert , hat aber nicht wirklich geklappt.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Net
    3. Public Class Form1
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. Dim request As System.Net.HttpWebRequest
    6. Dim response As System.Net.HttpWebResponse = Nothing
    7. Dim reader As StreamReader
    8. ' Accept self signed certificates
    9. System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
    10. request = DirectCast(System.Net.WebRequest.Create("https://www.freenet.de/index.html"), System.Net.HttpWebRequest)
    11. request.UserAgent = "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:5.0) Gecko/20110619 Firefox/5.0" 'Error 403 remove
    12. request.Headers.Add("ContentType", "application/json")
    13. request.Headers.Add("X-Api-Key", "9E6fUpJ2Av06I0nc4UXJ9TJia0auOI7m3s1pKSUpMa7iX5YufpSIxfPuG5729vU0")
    14. request.Headers.Add("Customer-Identificator", "alabau")
    15. response = DirectCast(request.GetResponse(), System.Net.HttpWebResponse)
    16. reader = New StreamReader(response.GetResponseStream())
    17. Dim rawresp As String
    18. rawresp = reader.ReadToEnd()
    19. RichTextBox1.Text = rawresp
    20. End Sub
    21. End Class

    @petaod In Post #8, im Code steht 'Error 403 remove, kann mich aber auch irren bei der tollen Fehlerbeschreibung (hat aber nicht wirklich geklappt).

    mnemonik schrieb:

    ' Accept self signed certificates
    Der Code nach diesem Kommentar erlaubt die Vebrindung mit HTTPS via TLS 1.2 jedoch nicht mit selbstsignierten Zertifikaten. Ist das hier der Fall? Es wird ein selbstsigniertes SSL/TLS Zertifikat verwendet?

    Falls ja (was ich jedoch nicht empfehlen würde, SSL Zertifikate gibts kostenlos), dann brauchst du das hier:

    C#-Quellcode

    1. ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, sllPolicyErrors) => true;

    VB.NET-Quellcode

    1. ServicePointManager.ServerCertificateValidationCallback = Function(sender, cert, chain, sllPolicyErrors) True
    SIMDoku (Simple Dokumentenverwaltung)
    Mein Lernprojekt um die verschiedensten Facetten der .NET Entwicklung zu erkunden.
    GitHub

    VB Paradise Dark Theme
    Inoffizieller VB-Paradise Discord.
    ich erweiter mal die Antwort von @EaranMaleasi

    bei einem HttpWebRequest kannst du folgendes machen ....

    C#-Quellcode

    1. HttpWebRequest r = (HttpWebRequest) HttpWebRequest.Create(url);
    2. r.ServerCertificateValidationCallback = delegate { return true; };
    slice, stimmt "Fehler 403" ist was komplett anderes, aber dieser Fehler kam ebenfalls raus und ich habe versucht es zu beseitigen. Hat aber nicht wirklich geklappt, manche Webseiten erkennen meine Anfragen als kein Browser und sperren mich.

    petaod, X-Api-Key ist natürlich nicht notwendig und es geht auch ohne, aber in meiner Verzweiflung habe ich ihn einfach von einem Forum übernommen.

    EaranMaleasi, nein, meine Zertifikate ist nicht selbst geschrieben!


    Ich glaube, ich gebe langsam auf und lasse alles wie es ist. Ich weiß nicht wirklich wo das Problem liegt, mache Webseiten mit TLS 1.2 kann man locker ansprechen , die anderen wieder nicht.

    Danke Leute! ;)