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 auf TLS 1.2 umgestellt hat.
Jetzt versuche ich hier das 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 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 "Tips" 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.
Der Rechner "kann" also TLS 1.2 doch...
Hat da irgendjemand eine Idee zu?!
Danke für die Hilfe
Frank
|