Download einer Datei von einem SSL (TLS 1.2) Webserver schlägt fehl

  • Hallo zusammen,

    ich habe ein Problem mit dem Download einer Datei von einem internen Webserver, der SSL (TLS 1.2) verwendet.

    Bislang habe ich mit dem Befehl:

    Code
    $hDownload = InetGet("https://url-des-Servers-und-Verzeichnis/Dateiname.txt", $sFilePath, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND

    die Datei erfolgreich herunterladen können. Jetzt wurde der Webserver von TLS 1.0 auf (ausschliesslich) TLS 1.2 umgestellt und der Download schlägt fehl.

    Bereits ausprobiert habe ich als Alternative:

    Code
    Dim $oHttp = ObjCreate("WinHTTP.WinHTTPRequest.5.1")
    $oHttp.open ("GET", "https://url-des-Servers-und-Verzeichnis/Dateiname.txt", False)
    $oHttp.Option(9) = 2048 ; 128 - TLS 1.0, 512 - TLS 1.1, 2048 - TLS 1.2, 2056 - TLS 1.1 & TLS 1.2
    $oHttp.Send
    ConsoleWrite($oHttp.responseText & @CRLF) 

    In der Console bekomme ich mit dieser Methode nur noch einen Error:

    "scriptname.au3" (10) : ==> The requested action with this object has failed.:

    $oHTTP.Send()

    $oHTTP^ ERROR

    Hat jemand eine Idee, wie ich jetzt diese Datei unter TLS 1.2 herunterladen kann?

    Vielen Dank schon mal für eure wertvollen Tipps.

  • Hallo BugFix,

    vielen Dank für deinen Hinweis. Im Vorfeld habe ich schon einiges dazu recherchiert, speziell zu dem RegistryKey, was aber so erstmal nicht geklappt hat. Den wirklich wichtigen Hinweis fand ich dann in dem M$ Support Artikel:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp

    On x64-based computers, DefaultSecureProtocols must also be added to the Wow6432Node path:

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp

    The registry value is a DWORD bitmap. The value to use is determined by adding the values corresponding to the protocols desired.

    Take the value for TLS 1.1 (0x00000200) and the value for TLS 1.2 (0x00000800), then add them together in calculator (in programmer mode), and the resulting registry value would be 0x00000A00.

    So hat es dann geklappt.

    Die von mir bisher verwendete Methode "InetGet" aus der UDF INet.au3 funktioniert, auch nach setzen der Registrywerte, leider nicht mehr mit TLS 1.2. Als funktionale Alternative bietet sich jedoch der GET Befehl via $oHttp = ObjCreate("WinHTTP.WinHTTPRequest.5.1") an.

    Vielen Dank nochmal für deine Hilfe.

    Viele Grüße

    Duckbone

    Einmal editiert, zuletzt von Duckbone (11. Juli 2019 um 11:20)