Dezember 07, 2021, 12:16:17

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


TLS 1.2 unter Win7 - HTTPRequest funktioniert nicht

Begonnen von ARBO, November 05, 2021, 18:27:00

⏪ vorheriges - nächstes ⏩

ARBO

Hallo,

ich habe mir schon einen Wolf gesucht und komme einfach nicht weiter...

Also, wir hatten bis zum Frühjahr über unsere Access-Datenbank an ein Endgerät Aufträge verschickt und Statusmeldungen / Nachrichten zurück bekommen.

Jetzt waren die Geräte einige Zeit nicht im Einsatz. Jetzt klappt unser VBA-Modul jedoch nicht mehr.
Sehr wahrscheinlich liegt es daran, dass die Gegenseite zwischenzeitlich auf TLS 1.2 umgestellt hat.

Jetzt versuche ich das hier einzubinden, die Datenbank läuft jedoch auf einem recht alten Rechner (Win7 Ultimate SP1 und Access 2002, bzw. runtime 2007).

Vorausschickend sei angemerkt, dass ich (natürlich) in den Internetoptionen (erweitert) TLS 1.2 aktiviert habe.

Auch habe ich den Hinweis / das Update von Microsoft dazu (https://support.microsoft.com/de-de/topic/update-zum-aktivieren-von-tls-1-1-und-tls-1-2-als-sichere-standardprotokolle-in-winhttp-in-windows-c4bd73d2-31d7-761e-0178-11268bb10392) umgesetzt.

Beides bringt jedoch absolut nichts!

Ich erhalte bei "send" immer die Fehlermeldung "Im Support des sicheren Channels ist ein Fehler aufgetreten".

Habe da auch schon verschiedene "Tipps" hierzu versucht umzusetzen. Der Code sieht aktuell so aus:
        Const HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0
   
        Dim HttpReq As WinHTTP.WinHttpRequest

        Set HttpReq = New WinHttpRequest
        ' Timeouts setzen.
        HttpReq.setTimeouts 60000, 60000, 60000, 60000
        reportURL = rst("Server")
        Anmeldung = "?account=" & rst("Benutzername") & "&username=" & rst("DeviceID") & _
                                "&password=" & rst("Passwort") & "&objectno=" & rst("Kennung") & apikey
        Aktion = "&lang=de&useISO8601=true&action=showObjectReportExtern"
        ' HTTP Verbindung öffnen
        HttpReq.Open "GET", reportURL & Anmeldung & Aktion, False
        HttpReq.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
        HttpReq.SetCredentials rst("Benutzername"), rst("Passwort"), HTTPREQUEST_SETCREDENTIALS_FOR_SERVER
        HttpReq.Option(WinHttpRequestOption_SecureProtocols) = 2048  ' 2048 für HEX 000800 = TLS 1.2;
                                 ' liefert: Fehlernummer 5 ("Ungültiger Prozeduraufruf oder ungültiges Argument")
        HttpReq.Option(9) = 2048 ' 2048 für HEX 000800 = TLS 1.2;
                                 ' liefert: Fehlernummer 5 ("Ungültiger Prozeduraufruf oder ungültiges Argument")
        HttpReq.Option(WinHttpRequestOption_SslErrorIgnoreFlags) = _
                                WinHTTP.WinHttpRequestSslErrorFlags.SslErrorFlag_Ignore_All
                                 'Ignore SSL errors, hat keinerlei Effekt
        'In UTF-8 kodieren
        HttpReq.Option(WinHttpRequestOption_URLCodePage) = "UTF-8"
        HttpReq.SetRequestHeader "Content-Type", "text/xml; charset=UTF-8"
        ' HTTP-Request absenden.
        HttpReq.Send
                           ' liefert: Fehlernummer -2147012739
                           ' ("Im Support des sicheren Channels ist ein Fehler aufgetreten")
        ' Auf die Serverantwort warten.
        HttpReq.waitForResponse
        ' Ergebnis zurück geben
        RequestAntwort = HttpReq.responseText
    ...
Habe auch in der Registry bereits manuell
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp den Schlüssel DefaultSecureProtocols auf 0x00000800 gesetzt...

Den Requeststring im Browser eingegeben funktioniert einwandfrei.
Der Rechner (zumindest die Browser) "kann" also TLS 1.2 doch...

Hat da irgendjemand eine Idee zu?!
Danke für die Hilfe
Frank

PhilS

Hast du mal versucht in der Registry (HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols, Siehe: TLS/SSL Settings) generell für SChannel TLS 1.2 zu aktivieren und alle älteren Protokolle zu deaktivieren?
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

ARBO

Hi PhilS,

ne, das noch nicht.
Da steht bei mir (neben TLS 1.2) noch TLS 1.1 drin...
Versuche ich gleich nochmal.

Viele Grüße
Frank

ARBO

Hallo PhilS,

habe Deinen Rat befolgt und zusätzlich (noch einmal) den Assistenten für die Erweiterung der Registrierungsschlüssel (diesmal also nicht "händisch", sondern mit dem Assistenten von Microsoft) durchlaufen lassen...
Und was soll ich sagen?
Jetzt klappt es!
Ob es jetzt Dein Tipp war oder ich einfach nur einen Schlüssel manuell nicht oder nicht korrekt eingetragen hatte, vermag ich nicht zu sagen, aber ich gehe davon aus, dass Dein Tipp zielführend war, weil ich doch bestimmt keinen Fehler gemacht hatte...
;-)

Vielen lieben Dank!
Frank

ARBO


Köbi

Thema gelöst, siehe oben rechts.
ZitatNeuigkeiten: Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!