AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TIDHTTP - Open SSL - TLS

Ein Thema von josef-b · begonnen am 13. Apr 2020 · letzter Beitrag vom 23. Sep 2020
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#1

AW: TIDHTTP - Open SSL - TLS

  Alt 15. Apr 2020, 14:46
sslvSSLv23 sollte als Voreinstellung erstmal richtig sein. Nur wenn das nicht klappt kann man mit der Funktion prüfen, ob es überhaupt eine "passende" Version gibt.

Der Rückgabewert der Funktion muss ja nicht zwingend ein Integer sein, man kann ihn ja auch auf TIdSSLVersion ändern, wenn man als Defaultrückgabewert sslvSSLv23 nimmt, kann man sie eigentlich immer nutzen.

Aber: SSL1 wird der Funktion als Parameter übergeben und innerhalb der Funktion wird in der For-Schleife am Anfang SSL.SSLOptions.Method := myIdSSLVersion; gesetzt. Damit ist eine Zuweisung nach dem Aufruf der Funktion nicht erforderlich.

Der Rückgabewert ist eigentlich nur dazu da, um zu prüfen, ob die Routine erfolgreich war, man könnte also auch als Rückgabe ein Boolean nehmen.

Delphi-Quellcode:
function GetSSLMethod(sUrl: string; var sMessage: string; ssl: TIdSSLIOHandlerSocketOpenSSL; http: TIdHTTP): Boolean;
var
  myIdSSLVersion: TIdSSLVersion;
begin
  Result := False;
  for myIdSSLVersion := Low(TIdSSLVersion) to High(TIdSSLVersion) do begin
    SSL.SSLOptions.Method := myIdSSLVersion;
    try
      http.RedirectMaximum := 0;
      http.HandleRedirects := false;
      http.Response.Clear;
      http.Get(sUrl);
      http.Disconnect(True);
      http.IOHandler.InputBuffer.Clear;
      Result := True;
      break;
    except
      on e: Exception do begin
        case http.ResponseCode of
          301, 302 : sMessage := sMessage + #13 + http.ResponseText;
        else
          sMessage := sMessage + #13 + AnsiReplaceText(e.Message, #13#10, ' ');
        end;
        http.Disconnect(True);
        http.IOHandler.InputBuffer.Clear;
      end;
    end;
  end;
end;
Delphi-Quellcode:
// Aufruf z. B. so:
if GetSSLMethod('https://was.auch.immer', sMessage, ssl1, http1) then begin
  // Hier die zu erledigende Aufgabe einbauen.
end else begin
  ShowMessage(sMessage);
end;
@DieDolly

sslvSSLv23 ist eigentlich alles, sowas wie sslvSSL_AlleVerfuegbarenVersionen.

Der Name sslvSSLv23 ist leider eher irreführend, da er etwas anderes suggeriert, als er eigentlich meint.

Der Setter in der Unit IdSSLOpenSSL sieht so aus:
Delphi-Quellcode:
procedure TIdSSLOptions.SetMethod(const AValue: TIdSSLVersion);
begin
  fMethod := AValue;
  if AValue = sslvSSLv23 then begin
    fSSLVersions := [sslvSSLv2,sslvSSLv3,sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2];
  end else begin
    fSSLVersions := [AValue];
  end;
end;
  Mit Zitat antworten Zitat
josef-b

Registriert seit: 6. Jun 2004
Ort: bei Jena in Thüringen
95 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TIDHTTP - Open SSL - TLS

  Alt 15. Apr 2020, 14:56
@delphi.narium:

Ok..das habe ich jetzt glaub ich verstanden - In der Funktion macht
er die Zuweisung bei der ersten gültigen SSL - Version.

Ja und dann ist es egal, welche das ist, Hauptsache ich kann das Bildchen downloaden.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#3

AW: TIDHTTP - Open SSL - TLS

  Alt 15. Apr 2020, 15:04
@delphi.narium:

Ok..das habe ich jetzt glaub ich verstanden - In der Funktion macht
er die Zuweisung bei der ersten gültigen SSL - Version.

Ja und dann ist es egal, welche das ist, Hauptsache ich kann das Bildchen downloaden.
Pflappsig formuliert:

Die Funktion sucht das Erstbeste, was beide Seiten können.

Und wenn auf der Serverseite mal was nichtmehr unterstützt wird, nehmen wir beim nächsten Aufruf halt wieder das Erstbeste, was beide Seiten können. Eigentlich ist die Funktion nix anderes als ein "Try and Error" bis zum ersten "Nicht-Fehler".

Wie bei 'nem fremden Nummernschloss für's Fahrrad: man probiert solange die nächste Zahl, bis es aufgeht

Quasi in Mini-Brute-Force
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TIDHTTP - Open SSL - TLS

  Alt 23. Sep 2020, 09:51
Hab ich hier die Lösung übersehen ?

Ich häng mich mal mir an, weil quasi gleiche Probs.
- Delphi 10.3 Community Edition
- Jedi Code Lib 3.1
- Jedi Visual Comp. Lib 3.6
- TIdHTTP & TIdSSLIOHandlerSocketOpenSSL melden beide 10.6.2.5366

Vor ca. 1 Jahr hab ich eine C-Schnipselei nach Delphi übersetzt, um IPTV naach meinen Wünschen zu nutzen.
Hier: https://tvonline.ewe.de (bzw. https://zattoo.com) mit einem bezahlten Account.
Das funktionierte zuletzt (vor ca. 3/4 Jahr ?!) recht super .... OHNE explizite Nutzung von SSL !

Nun hab ich das wieder hervorgeholt und nix geht mehr.
Sehr wahrscheinlich eben wegen umstellung der Verschlüsselung...

Habe aus zuvor genanntem schon alles Mögliche in Kombination ausprobiert - ich erhalte immer wieder diese Fehler:
(Das Folgende ist ein Auszug aus meinem Logger)
Code:
[10:24:25:322] [ZATTOO - LogIn]: URL: https://tvonline.ewe.de
[10:24:25:322] [ZATTOO - LogIn]: --- Get AppToken ----------------------
[10:24:25:322] [ZATTOO - GETAPPTOKEN]: TEST: 0
[10:24:27:290] [ZATTOO - GETAPPTOKEN]: Socket-Fehler # 10053Software verursachte einen Verbindungsabbruch.
[10:24:27:290] [ZATTOO - GETAPPTOKEN]: TEST: 1
[10:24:27:467] [ZATTOO - GETAPPTOKEN]: Fehler beim Verbinden mit SSL. error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
[10:24:27:467] [ZATTOO - GETAPPTOKEN]: TEST: 2
[10:24:27:645] [ZATTOO - GETAPPTOKEN]: Fehler beim Verbinden mit SSL. error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
[10:24:27:645] [ZATTOO - GETAPPTOKEN]: TEST: 3
[10:24:27:821] [ZATTOO - GETAPPTOKEN]: Fehler beim Verbinden mit SSL. error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version
[10:24:27:821] [ZATTOO - GETAPPTOKEN]: TEST: 4
[10:24:27:999] [ZATTOO - GETAPPTOKEN]: Fehler beim Verbinden mit SSL. error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version
[10:24:27:999] [ZATTOO - GETAPPTOKEN]: TEST: 5
[10:24:28:178] [ZATTOO - GETAPPTOKEN]: Fehler beim Verbinden mit SSL. error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version
Der Zugriff, Login und TV gucken mit Mozilla funzt 1A.
Ich bin hier z.Zt. mit dem Latein am Ende. Auch andere Seiten bringen da prinzipiell die gleichen Ansätze.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.780 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: TIDHTTP - Open SSL - TLS

  Alt 23. Sep 2020, 10:06
.. hast Du die SSL Bibliotheken schon ausgetauscht?
Kann sein, das Du ältere benutzt.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TIDHTTP - Open SSL - TLS

  Alt 23. Sep 2020, 10:09
Nein. Getauscht ersetzt habe ich noch nichts.
Bin davon ausgegangen, dass die Commu-Ed 10.3 (02.10.19 installiert) aktuell genug ist.
Dito die Indy Komponenten.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.780 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: TIDHTTP - Open SSL - TLS

  Alt 23. Sep 2020, 10:13
Delphi bringt aber doch keine SSL Libraries (libeay32.dll und ssleay32.dll) mit.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
772 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TIDHTTP - Open SSL - TLS

  Alt 23. Sep 2020, 15:31
Vor ca. 1 Jahr hab ich eine C-Schnipselei nach Delphi übersetzt, um IPTV nach meinen Wünschen zu nutzen.
Ich weiss natürlich nicht, was "nach meinem Wünschen" bedeutet... aber sobald du dann 10.4 hast, kannst du deine Webseiten auch mit der neuen TEdgeBrowser Komponente anzeigen lassen. Dann musst du dich um die SLL Dinge nicht kümmern.

1. Delphi Tools > GetIt WebView2 installieren.
2. WebView2 Runtime Installer installieren
3. Beispiel aus Delphi öffnen (\Public\Documents\Embarcadero\Studio\21.0\Samples \Object Pascal\VCL\WebBrowser\Edge\). WebView2Loader.dll aus 1. ins .exe Verzeichnis.
Dann hast du in deiner App die topaktuelle EdgeVersion 86.0.622.19 vom 22.9. drauf und kannst deine Seiten laden.
Michael Gasser
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz