Hallo Forum.
Nachdem ich mir den gestrigen Montag um die Ohren geschlagen habe, möchte ich meine Erfahrungen mit euch teilen. Vielleich hat ja jemand einen besseren Lösungsansatz.
Es geht darum einen TRestClient (Tokio 10.2.0) mit TLS Unterstützung unter Windows 7 Sp1 zu nutzen. Die Onboard Variante nutzt hierzu WinHTTP. Gerade hier scheinen alte Windows Versionen Probleme zu haben. Windows 7 sowie Server 2008 R2 auch, brechen sofort die Übertragung ab, während Win 10 und andere problemlos die Verbindung akzeptieren.
exception class : ERESTException
exception message : REST request failed: Fehler beim Senden der Daten: (12029) Die Serververbindung konnte nicht hergestellt werden.
Den Lösungsvorschlag seitens Microsoft die "sicheren Standardprotokolle" per Registry Schlüssel zu setzen ist meineserachtens schon ein Problem. Sie funktioniert zwar, jedoch gestaltet sich das automatische Ausrollen als ein Problem.
https://support.microsoft.com/de-de/...e-protocols-in
Hier brachte nur eine Änderung direkt in der System.Net.HttpClient.Win.pas Abhilfe
Code:
function TWinHTTPClient.DoExecuteRequest(const ARequest: THTTPRequest; var AResponse: THTTPResponse;
const AContentStream: TStream): TWinHTTPClient.TExecutionResult;
...
begin
...
// https://docs.microsoft.com/de-de/windows/desktop/WinHttp/option-flags
OptionValue := WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 or WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2;
WinHttpSetOption(FWSession, WINHTTP_OPTION_SECURE_PROTOCOLS, @OptionValue, sizeof(OptionValue));
// Send Request
Res := WinHttpSendRequest(LRequest.FWRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, DataLength, 0);
...
end;
Beste Grüße
Ralf