Thema: Delphi TRestClient TLS Win7

Einzelnen Beitrag anzeigen

Ralf4711

Registriert seit: 23. Okt 2018
5 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

TRestClient TLS Win7

  Alt 23. Okt 2018, 08:58
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
  Mit Zitat antworten Zitat