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
Seite 1 von 2  1 2      
josef-b

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

AW: TIDHTTP - Open SSL - TLS

  Alt 15. Apr 2020, 14:15
Danke nochmals für die Mühe..

Ich denke mir, um die meisten Server zu erreichen, sollte ich

die Funktion GetSSLMethod aufrufen.

Dazu aber noch eine Frage..

Ich bekomme dann den Integer-Wert.

Wie kann ich jetzt dem IOHandler den Wert zuweisen?

SSL1.SSLOptions.Method := ? (der Integer geht ja nicht ?) oder sollte ich einfach


Delphi-Quellcode:

SSL1.SSLOptions.Method := sslvSSLv23
setzen, weil ja das sslvsslv23 alle SSLVersions unterstützt?
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: TIDHTTP - Open SSL - TLS

  Alt 15. Apr 2020, 14:19
Hier musst du vermutlich re-mappen.
Das hier steht in der IdSSLOpenSSL.
TIdSSLVersion = (sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2);

Was ist sslvsslv23 eigentlich? Ist die aktuelle Version nicht 1_2 ?
  Mit Zitat antworten Zitat
josef-b

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

AW: TIDHTTP - Open SSL - TLS

  Alt 15. Apr 2020, 14:39
Hier musst du vermutlich re-mappen.
Das hier steht in der IdSSLOpenSSL.
TIdSSLVersion = (sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2); Was ist sslvsslv23 eigentlich? Ist die aktuelle Version nicht 1_2 ?
Was meinst du mit remappen?


Wenn du

Delphi-Quellcode:

TIdSSLIOHandlerSocketOpenSSL.Method := sslvsslv23
setzt, dann setzt er ja alle SSlVersions auf true,
außer eben sslvSSLv23...

ich habe gelessen, dass er sich dann automatisch, wenn möglich, eine gültiges SSL aussucht.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: TIDHTTP - Open SSL - TLS

  Alt 15. Apr 2020, 14:42
Zitat:
Was meinst du mit remappen?
Das meine ich damit nicht.

Ich hab mir gerade mal die GetSSLMethod angeguckt.

TIdSSLIOHandlerSocketOpenSSL.Method := TIdSSLVersion(dein integer wert); reicht.

Ich finde, dieser Ansatz ist eh sehr gefährlich. Ich würde niemals beispielsweise ssl 1 unterstützen.
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: TIDHTTP - Open SSL - TLS

  Alt 15. Apr 2020, 14:50
Ich finde, dieser Ansatz ist eh sehr gefährlich. Ich würde niemals beispielsweise ssl 1 unterstützen.
Es geht nicht darum, was Du oder wir oder sonstwer unterstützen würden, sondern darum herauszufinden, was der Server, auf den wir zuzugreifen gedenken, unterstützt.

Und wenn die Gegenseite sagt: "Ich unterstütze nur ssl 1", dann muss man damit leben und ssl 1 nutzen oder man unterhält sich nicht mit der Gegenseite.

Inwieweit es sinnvoll ist ssl 1 zu unterstützen, steht hier nicht zu Debatte.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#6

AW: TIDHTTP - Open SSL - TLS

  Alt 15. Apr 2020, 14:54
Heißt das
TIdSSLIOHandlerSocketOpenSSL.Method := sslvSSLv23;

bedeutet, dass man alle Versionen unterstützt und ist dasselbe wie

TIdSSLIOHandlerSocketOpenSSL.Method := [sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2];
?
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: TIDHTTP - Open SSL - TLS

  Alt 15. Apr 2020, 14:57
@DieDolly

Ja.
  Mit Zitat antworten Zitat
Delphi.Narium

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

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
 
#9

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
 
#10

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
Antwort Antwort
Seite 1 von 2  1 2      


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:03 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