Autor |
Beitrag |
galagher
Beiträge: 2550
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: So 15.12.24 10:36
Ich verwende in meinem Programm die Indy-Komponenten TIdHTTP und TIdSSLIOHandlerSocketOpenSSL. Wenn ich Text mit s := IdHTTP1.Get(Edit1.Text); auslesen will, entsteht der folgende Fehler:
Zitat: | Fehler beim Verbinden mit SSL.
error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version |
Was bedeutet das?
Unter Windows7 funktionierte es noch.
Die Eigenschaft IdHTTP1.Request.UserAgent ist vorgabemäßig "Mozilla/3.0 (compatible; Indy Library)". Mozilla 3.0! Ehrlich gesagt, habe ich keine Ahnung, ob ich das so lassen kann oder irgendwie anpassen muss oder was ich sonst bei IdHTTP1 anpassen muss, damit es wieder funktioniert.
Vielleicht kennt sich da jemand besser aus als ich!
Moderiert von Th69: Titel geändert ("Jedi"->"Indy").
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
Ralf Jansen
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: So 15.12.24 16:02
Du scheinst mit irgendeinem Server per Tls1 sprechen zu wollen. Die meisten Server lehnen das mittlerweile als unsicher (zurecht) ab. Irgendwo kann man bestimmt via Indy die zu benutzen Tls Version vorgeben. Zumindest Tls 1.2 solltest du vorgeben, besser 1.3, aber das funktioniert erst ab Windows 11 richtig.
|
|
galagher
Beiträge: 2550
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: So 15.12.24 19:27
Ralf Jansen hat folgendes geschrieben : | Irgendwo kann man bestimmt via Indy die zu benutzen Tls Version vorgeben. |
Bei TIdSSLIOHandlerSocketOpenSSL gibt es die Einstellung "SSLVersions" im OI (oder auch per Code):
Delphi-Quelltext 1:
| IdSSLIOHandlerSocketOpenSSL1.SSLOptions.SSLVersions := [sslvTLSv1]; |
Alternativ:
Delphi-Quelltext 1:
| IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1; |
Ist es das, was du meinst?
sslvTLSv1 ist die Voreinstellung, es funktioniert aber leider keine der verfügbaren Optionen: sslvSSLv2, sslvSSLv3, sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2, wobei sslvSSLv23 alle genannten auf True setzt, selbst aber nicht gesetzt werden kann (bleibt immer False).
Und was hat es mit "Mozilla 3.0" auf sich? Diese Version ist doch total veraltet!
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
Beiträge: 19303
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 15.12.24 20:48
Kann es sein, dass schlicht deine OpenSSL-DLLs zu alt sind? Unter Windows 7 gingen noch TLS 1.0 und TLS 1.1, wohingegen diese in Windows 11 nicht mehr standardmäßig zur Verfügung stehen. Vielleicht hast du aber DLLs, die nichts Neueres können.
galagher hat folgendes geschrieben : | Und was hat es mit "Mozilla 3.0" auf sich? Diese Version ist doch total veraltet! |
Das ist nur einn String zur Identifikation des Useragents. Der sagt dem Server also, was für ein Client dranhängt, damit der Server darauf reagieren kann. Zum Beispiel wurde für den Internet Explorer damals wegen Bugs manchmal anderer Code ausgeliefert.
Zuletzt bearbeitet von jaenicke am So 15.12.24 20:48, insgesamt 1-mal bearbeitet
|
|
Ralf Jansen
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: So 15.12.24 20:48
Zitat: | Und was hat es mit "Mozilla 3.0" auf sich? Diese Version ist doch total veraltet! |
Hat nix mit deinem TLS Problem zu tun. In den User Agent kannst du rein schreiben was du willst. Das der Server daran irgendwas filtert ist ein Ding der 00er Jahre. Jeder Serverbetreiber sollte gemerkt haben das man den User Agent beliebig setzen kann und beliebig gesetzt wird und nichts aussagt. Wenn du Nett sein will schreib da den Applikationsnamen deiner Anwendung mit rein. Gibt dem Serverbetreiber eine Möglichkeit für seine Statistiken.
|
|
galagher
Beiträge: 2550
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mo 16.12.24 06:21
jaenicke hat folgendes geschrieben : | Kann es sein, dass schlicht deine OpenSSL-DLLs zu alt sind? |
Kann schon sein, ich weiß nicht... War nie ein Thema für mich, Internetzugang habe ich, und gut ist's.
Was also soll ich da genau machen? Sind die OpenSSL eine "Delphi-Sache"? Die OpenSSL-DLLs aktualisieren? Wie?
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
galagher
Beiträge: 2550
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Di 17.12.24 06:13
Habe auch im Internet nichts Hilfreiches zu dem Thema gefunden, also hoffe ich, dass hier jemand eine Lösung hat. Was kann ich tun?
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
Beiträge: 19303
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 17.12.24 13:12
Die aktuellen DLLs für OpenSSL findest du hier:
github.com/IndySockets/OpenSSL-Binaries
Für 32-Bit brauchst du also die openssl-1.0.2u-i386-win32.zip. Die Dateien kannst du direkt neben deine Exe legen wie gewohnt.
|
|
galagher
Beiträge: 2550
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Di 17.12.24 17:17
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
Beiträge: 19303
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 17.12.24 17:38
galagher hat folgendes geschrieben : | Oder meintest du "direkt neben deine Exe legen" anders? Ich meine, ich habe früher, unter Windows7, doch auch keine dll-Dateien zu meiner exe gegeben, und es hat funktioniert. |
Dann lagen diese zufälligerweise irgendwo auf deinem System herum und deine Exe hat die gekapert.
Kannst du vielleicht eine Beispieladresse nennen, bei der das auftritt? Hast du es mit verschiedenen Servern versucht?
|
|
galagher
Beiträge: 2550
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Di 17.12.24 17:50
jaenicke hat folgendes geschrieben : | Kannst du vielleicht eine Beispieladresse nennen, bei der das auftritt? Hast du es mit verschiedenen Servern versucht? |
Das tritt jedesmal auf, bei entwickler-ecke.de/v....php?p=721850#721850, bei de.wikipedia.org/wiki/, einfach bei jeder Adresse.
Da ich ehrlich gesagt das Ganze nicht wirklich verstehe, (sondern einfach froh war, dass es funktionierte ), frage ich mich, was du mit "verschiedenen Servern" meinst. Die bereits genannten Einstellungen in TIdSSLIOHandlerSocketOpenSSL? Die Voreinstellung klappt nicht.
Moderiert von Th69: Doppelposting entfernt.
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
Beiträge: 19303
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 17.12.24 21:24
Kannst du bitte einmal eine solche Exe anhängen? Mich würde interessieren, ob es bei mir geht und nach welchen DLLs die sucht. Ich habe 10.1 leider nicht mehr parat.
|
|
Th69
Beiträge: 4792
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mi 18.12.24 11:12
Hallo galagher,
du meinst Indy (anstatt JEDI)!? Ich habe deswegen mal den Titel geändert.
Welche Indy-Version benutzt du denn (9 oder 10)?
In der Delphi-PRAXiS gibt es auch ähnliche Themen dazu:
IdHTTP mit SSL
tlsv1 alert protocol version
|
|
galagher
Beiträge: 2550
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mi 18.12.24 16:14
jaenicke hat folgendes geschrieben : | Kannst du bitte einmal eine solche Exe anhängen? Mich würde interessieren, ob es bei mir geht und nach welchen DLLs die sucht. Ich habe 10.1 leider nicht mehr parat. |
Kann ich leider nicht: Obwohl die EXE nur ca. 2,7 MB hat, bekomme ich vom Forum die Meldung: Zitat: | Der Dateianhang ist zu groß. Maximale Größe: 5MB |
Versuche jetzt, sie in einer zip-Datei zu senden, mal sehen...
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Zuletzt bearbeitet von galagher am Mi 18.12.24 16:22, insgesamt 1-mal bearbeitet
|
|
galagher
Beiträge: 2550
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mi 18.12.24 16:21
Th69 hat folgendes geschrieben : | du meinst Indy (anstatt JEDI)!? Ich habe deswegen mal den Titel geändert. |
Indy, sorry!
Th69 hat folgendes geschrieben : | Welche Indy-Version benutzt du denn (9 oder 10)? |
Ich benutze Indy10.
Th69 hat folgendes geschrieben : | In der Delphi-PRAXiS gibt es auch ähnliche Themen dazu: |
Sehe ich mir gleich an!
//Edit: Leider nicht hilfreich!
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Zuletzt bearbeitet von galagher am Mi 18.12.24 16:38, insgesamt 1-mal bearbeitet
Für diesen Beitrag haben gedankt: jaenicke
|
|
galagher
Beiträge: 2550
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mi 18.12.24 16:26
zip-Datei im Anhang!
Einloggen, um Attachments anzusehen!
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
Beiträge: 19303
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 18.12.24 20:48
Die Exe lädt die korrekten DLLs, wenn ich sie bereitstelle, aber es geht dennoch nicht. Es kann daher nur daran liegen, was in den Komponenten eingestellt ist, oder an der Indyversion.
Ich bekomme das mit Delphi 10.4 nur, wenn ich den Standard (TLS 1.0) eingestellt lasse. So funktioniert es: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var Http: TIdHTTP; IndyOpenSsl: TIdSSLIOHandlerSocketOpenSSL; begin Http := TIdHTTP.Create(nil); try IndyOpenSsl := TIdSSLIOHandlerSocketOpenSSL.Create(Http); IndyOpenSsl.SSLOptions.SSLVersions := [sslvTLSv1_1, sslvTLSv1_2]; Http.IOHandler := IndyOpenSsl; ShowMessage(Http.Get(Edit1.Text)); finally Http.Free; end; end; | Du hattest ja geschrieben, dass du das schon versucht hattest, aber ich glaube, dass da etwas nicht richtig war. Versuch es mal bitte so.
|
|
galagher
Beiträge: 2550
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mi 18.12.24 21:00
jaenicke hat folgendes geschrieben : | Versuch es mal bitte so. |
Da erhalte ich den Fehler:
Zitat: | Fehler beim Verbinden mit SSL.
error:140740BF:SSL routines:SSL23_CLIENT_HELLO:no protocols available. |
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
Beiträge: 19303
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 18.12.24 23:00
Ich hänge mal das komplette Projekt an.
Einloggen, um Attachments anzusehen!
Für diesen Beitrag haben gedankt: galagher
|
|
galagher
Beiträge: 2550
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Do 19.12.24 16:54
jaenicke hat folgendes geschrieben : | Ich hänge mal das komplette Projekt an. |
Funktioniert, und funktioniert auch in meinem Programm mit TIdHTTP und TIdSSLIOHandlerSocketOpenSSL mit den richtigen Einstellungen:
Delphi-Quelltext 1: 2:
| IdSSLIOHandlerSocketOpenSSL1.SSLOptions.SSLVersions := [sslvTLSv1_1, sslvTLSv1_2]; IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1; |
Bei Get('https://de.wikipedia.org') erhalte ich die Meldung:
Zitat: | HTTP/1.1 301 Moved Permanently |
Was hat denn das zu bedeuten? Genau damit hat es unter Windows7 noch funktioniert!
Get('https://de.wikipedia.org/wiki/Wikipedia:Hauptseite') hingegen klappt.
Weiters benötige ich tatsächlich beide dll's - unter Windows7 war das nicht so.
Jedenfalls bin ich einen Riesenschritt weiter!
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|