Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdHTTP mit SSL (https://www.delphipraxis.net/212093-idhttp-mit-ssl.html)

Detlev 16. Dez 2022 13:34

IdHTTP mit SSL
 
Ich versuche gerade die eigentlich trivial klingende Aufgabe, eine https-Seite mit den Indy-Komponenten zu lesen. Aber ich erhalte immer die folgende Exception EIdOSSLUnderlyingCryptoError mit der Message "Error connecting with SSL. error 1409442E:SSL routine:ssl3_read_bytes:tlsv 1 alert protocol version".

Ich nutze Delphi 10.2 Tokyo und dessen mitgelieferte Indy-Komponenten 10.6.2. libeay32.dll und ssleay32.dll sind vom 21.12.2019 1.0.2.21 (1.02u).

Code:
function TMyRestService.GetSSL(AURL: String): String;
var
  AHTTP : TIdHTTP;
begin
  AHTTP := TIdHTTP.Create(nil);
  AHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(AHTTP);
  AHTTP.HandleRedirects := True;

  Result := AHTTP.Get('https://de.wikipedia.org/wiki/Wikipedia:Hauptseite');

  AHTTP.Free;
end;
Was mache ich falsch?

Klaus01 16. Dez 2022 13:38

AW: IdHTTP mit SSL
 
Delphi-Quellcode:
function TMyRestService.GetSSL(AURL: String): String;
var
  AHTTP : TIdHTTP;
begin
  AHTTP := TIdHTTP.Create(nil);
  AHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(AHTTP);
  aHttp.IoHandler.SSLOptions.Method := sslvSSLv23;
  aHttp.IoHandler.SSLOptions.Mode := sslmUnassigned;
  AHTTP.HandleRedirects := True;

  Result := AHTTP.Get('https://de.wikipedia.org/wiki/Wikipedia:Hauptseite');

  AHTTP.Free;
end;
versuche es mal mit den obigen Änderungen.

Grüße
Klaus

mjustin 16. Dez 2022 13:49

AW: IdHTTP mit SSL
 
Zitat:

Zitat von Detlev (Beitrag 1516325)
Ich versuche gerade die eigentlich trivial klingende Aufgabe, eine https-Seite mit den Indy-Komponenten zu lesen. Aber ich erhalte immer die folgende Exception EIdOSSLUnderlyingCryptoError mit der Message "Error connecting with SSL. error 1409442E:SSL routine:ssl3_read_bytes:tlsv 1 alert protocol version".

Ich nutze Delphi 10.2 Tokyo und dessen mitgelieferte Indy-Komponenten 10.6.2. libeay32.dll und ssleay32.dll sind vom 21.12.2019 1.0.2.21 (1.02u).

Um TLS 1.1 und 1.2 zu aktivieren:

Delphi-Quellcode:
IdSSL.SSLOptions.SSLVersions := [sslvTLSv1_1, sslvTLSv1_2];


Standardmäßig aktiviert Indy nur TLS v1.0

Quelle: https://stackoverflow.com/a/48999286/80901

Detlev 16. Dez 2022 14:35

AW: IdHTTP mit SSL
 
Zitat:

Zitat von Klaus01 (Beitrag 1516326)
Delphi-Quellcode:
  aHttp.IoHandler.SSLOptions.Method := sslvSSLv23;
  aHttp.IoHandler.SSLOptions.Mode := sslmUnassigned;
versuche es mal mit den obigen Änderungen.

Danke für die schnelle Antwort. Funktioniert!

(Man muss aber "Socket: TIdSSLIOHandlerSocketOpenSSL" deklarieren und die Optionen dort setzen. AHTTP.IOHandler kennt das Feld SSLOptions nicht.)

Detlev 16. Dez 2022 14:38

AW: IdHTTP mit SSL
 
Zitat:

Zitat von mjustin (Beitrag 1516327)
Standardmäßig aktiviert Indy nur TLS v1.0

Auch dir vielen Dank!

Auch die Lösung alleine hätte es getan und man darf eure beide Lösungen auch kombinieren und es geht immer noch...


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz