Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Datei aus dem Internet herunterladen - geht nicht mehr! (https://www.delphipraxis.net/198893-datei-aus-dem-internet-herunterladen-geht-nicht-mehr.html)

NicoleWagner 20. Dez 2018 17:14

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Danke für die Antwort.

In das Verzeichnis welchse Programmes?
(in meinem Projekt mit den pas-text Dateien macht es sich wohl nicht gut)

Mein Delphi XE 3 ist schon einige Jahre alt.
Komme ich da sicher nicht in Teufels Küche, wenn ich neue Dateien dazu spiele?

PS:
Habe einmal ein Suchprogramm angeworfen. Beide Dateien finden sich in insgesamt 3 Versionen in meiner VM.
Die Versionen sind eine aus 2013 (RAD Studio) und 2 aus 2017 (div. andere).

Heuman 20. Dez 2018 17:25

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Zitat:

Zitat von NicoleWagner (Beitrag 1421451)
Danke für die Antwort.

In das Verzeichnis welchse Programmes?
(in meinem Projekt mit den pas-text Dateien macht es sich wohl nicht gut)

Mein Delphi XE 3 ist schon einige Jahre alt.
Komme ich da sicher nicht in Teufels Küche, wenn ich neue Dateien dazu spiele?

PS:
Habe einmal ein Suchprogramm angeworfen. Beide Dateien finden sich in insgesamt 3 Versionen in meiner VM.
Die Versionen sind eine aus 2013 (RAD Studio) und 2 aus 2017 (div. andere).

Hallo

in das Verzeichnis in wo die *.exe ist.

Gruß

Delphi.Narium 20. Dez 2018 17:30

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Hast Du schonmal ein Ping von der Kommandozeile versucht?

z. B.:
Code:
ping www.dername_des_Server.de
Was kommt da als Ergebnis bei raus?

Irgendwas analog zu
Code:
c:\>ping www.delphipraxis.net

Ping www.delphipraxis.net [138.201.18.17] mit 32 Bytes Daten:

Antwort von 138.201.18.17: Bytes=32 Zeit=16ms TTL=53
Antwort von 138.201.18.17: Bytes=32 Zeit=19ms TTL=53
Antwort von 138.201.18.17: Bytes=32 Zeit=20ms TTL=53
Antwort von 138.201.18.17: Bytes=32 Zeit=17ms TTL=53

Ping-Statistik für 138.201.18.17:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 16ms, Maximum = 20ms, Mittelwert = 18ms
Wenn hierbei schon kein Ergebnis kommt, oder Zeitüberschreitung ... dann hilft alle Suche im Delphiquelltext nichts.

Zuerst sollte ein Zugriff / Herunterladen der Datei mit reinen Windowsmitteln funktionieren. Solange das nicht geht, wird auch kein Delphiprogramm erfolgreich sein.

Die OpenSSL-Dateien gehören (erstmal) in das Verzeichnis der Projet_Download_Url.exe, damit diese genau diese Dateien findet und nicht irgendwelche, die im Suchpdad "versteckt" sind.

War/ist in der VM die Windowsfirewall aktiv?

Die speichert ihre Konfiguration in der Registry. Was dort konfiguriert wird, wird (zumindest teilweise) auch berücksichtigt, wenn die Firewall deaktiviert wurde.

Eventuell suchst Du in der Registry dann mal nach dem Servername aus der PDF-Url. Bei angenommen der Url www.delphipraxis.net/geheimedateien/Info.pdf bitte nur nach delphipraxis suchen.

Rolf Frei 20. Dez 2018 17:30

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Die SSL DLL's kannst du in das gleiche Verzeichnis kopieren, in dem du deine EXE liegen hast. In den XE3 Ordner musst du nichts kopieren. DLL's die im gleichen Ordner liegen, wie die EXE die sie benötigt, werden immer vorranging geladen und auch nur von diesem einen Porgramm. Andere Progamme die diese DLL's nutzen wissen ncihts von dieser Version und so gibt es auch keine Konflikte.

Dalai 20. Dez 2018 18:14

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Da es im IE in der VM auch nicht geht, würde ich mich sowieso erstmal komplett von Delphi lösen und das zugrundeliegende Problem genauer untersuchen. Sobald es im IE wieder geht, ist die Wahrscheinlichkeit recht hoch, dass es auch in einem Delphi-Projekt wieder tut.

Daher mein Vorschlag, mit Firefox und IE auf DEMSELBEN System (in der VM) zu testen, pingen, Namensauflösung und ähnliches zu testen. Wobei noch zu beachten ist, dass Firefox seine eigenen Einstellungen bzgl. Proxy, Verschlüsselung usw. hat bzw. nutzt.

Grüße
Dalai

DieDolly 20. Dez 2018 18:24

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Zitat:

Komme ich da sicher nicht in Teufels Küche, wenn ich neue Dateien dazu spiele?
Was meinst du damit?

Delphi CE 10.3 ist die Community Edition und kostenlos.

NicoleWagner 20. Dez 2018 18:25

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
@dieDolly: ob es Versioninkompatilbitäten gibt. Jedoch der Tipp mit dem exe-File-Verzeichnis hat mich beruhigt.



Ich habe die beiden dll durch die Versionen aus dem Link ersetzt und lese damit eine neue Fehlermeldung.

Sie lautet:
Exception EIdOSSLUnderlyingCryptoError
'Fehler beim Verbinden mit SSL
error: 1409442E: SSL routines:ssl3_read_bytes:tlsv1 alert protocol version'

DieDolly 20. Dez 2018 18:26

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Die einfachste Lösung wäre in Zukunft einfach die Community Edition zu verwenden. Die ist kostenlos und die Obergrenze der Einnahmen liegt bei 5000 USD oder EUR. Da muss man auch erstmal hinkommen.

hoika 20. Dez 2018 18:27

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Hallo,
Zitat:

Ich habe die beiden dll durch die Versionen aus dem Link ersetzt
Ersetzt? Dann die alten wieder zurück ...

NicoleWagner 20. Dez 2018 18:39

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
habe jetzt wieder eine andere Version probiert, aus 2017.
Wieder die Fehlermeldung: SSL-Bibliothek konnte nicht geladen werden.

@dieDolly:
Ich habe einige Kompoenten für XE 3 und eine FB(!)-Datenbank. Diese Dinge musst Du einmal zum Laufen bringen in einer neuen Version. Vor allem, wenn Du Altcode hast.
(Firebird zum Laufen zu brigen, ist richtig schwierig. Es klingt nur einfach, bevor Embarcadero Dein Geld hat. Danach geht es nicht mehr einfach.)

DieDolly 20. Dez 2018 18:54

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Zitat:

Diese Dinge musst Du einmal zum Laufen bringen in einer neuen Version. Vor allem, wenn Du Altcode hast.
Das ist klar. Aber willst du dich wirklich weiter mit solchen Altlasten abgeben? Eine OpenSSL-Version aus 2017 zu benutzen ist nicht gerade gut finde ich. Es gibt nicht umsonst SSL Updates.

Dann doch lieber einmal alles richtig nach 10.3 bringen und Ruhe haben.

NicoleWagner 20. Dez 2018 19:15

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Ich habe Monate gebraucht, die jetzigen Komponenten in deren jeweiligen Versionen und dem vorhandenen Code zum Laufen zu bringen.
Wirklich Monate. Nur rumgemacht statt irgendwas Produktives zu arbeiten. Jetzt habe ich das in ein VM gegossen und will es nie wieder rausholen.

Ich denke, dass die eine Zeile des Downloads zwar sehr lästig ist, doch die kleinere Arbeit.

Hast Du noch Ideen, wie ich dieses SSL-Bibliothek laden könnte?
Das scheint mir wirklich das Plausibelste: Sie haben irgendeine Sicherheitsrichtilie im Protokoll hochgesetzt und meine Sachen können die noch nicht.

Delphi.Narium 20. Dez 2018 19:30

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Was bedeutet denn die Fehlermeldung error: 1409442E: SSL routines:ssl3_read_bytes:tlsv1 alert protocol version'?

Du scheinst eventuell eine Protokollversion zu nutzen, die der Server nicht unterstützt.

Prüfe doch bitte erstmal, ob das vom Server, auf dem die abzuholende Datei liegt, unterstützt wird.

Da kannst Du u. a. auf dieser Seite prüfen: https://www.ionos.de/tools/ssl-check

Schau dort bitte nach, was von TSL 1, TSL 1.1, TSL 1.2, SSLv 2, SSLv 3 unterstützt wird. Und eine der unterstützten Varianten konfigurierst Du in der entsprechenden Komponente.

Die Fehlermeldung besagt jedenfalls schonmal, dass die DLLs geladen wurden und prinzipiell funktionieren, nur (noch) nicht im konkreten Kontext.

jaenicke 21. Dez 2018 07:16

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Der SSL Fehler zeigt, dass die DLL zu alt ist. Konfiguriert werden muss das normalerweise nicht. Für die neuesten TLS-Versionen braucht man aber OpenSSL DLLs von 2018. Diese finden sich z.B. hier in fertig kompilierter Form:
https://indy.fulgan.com/SSL/

Delphi.Narium 21. Dez 2018 08:27

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Der Fehler ist aber mit den neuesten DLLs (aus https://www.delphipraxis.net/1421201-post70.html) aufgetreten.

Auch wenn man das normalerweise nicht konfigurieren muss, so kann es im Problemfall nicht schaden, wenn man 'ne TIdSSLIOHandlerSocketOpenSSL-Komponnete nutzt und bei der in SSLOptions.Method mal eine Methode konfiguriert, von der man weiß, dass sie unterstützt wird.

Immerhin haben wir hier ein sehr diffuses "Gehtnichmehrproblem", dann kann es nicht schaden, wenn man explizt die unterschiedlichen Möglichkeiten zur Fehlereingrenzung durchgeht, um konkret sagen zu können:

Beim dem bekomme ich diese Fehlermeldung.
Bei diesem jene ...

NicoleWagner 21. Dez 2018 15:15

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Danke für die Antworten:

Die Tool-Seite 'ionos' zeigt bei Eingabe des vertraulichen Links selbst es als tadellos an, cit:
SSL Zertifikat ist richtig installiert, 0 Warnungen, 0 Fehler.
Das Ziel sieht mir sauber also aus.

Was meine dll Dateien betrifft. Ich habe alle Versionen davon durch: 2013, 2017 zwei davon und 2018. Daran liegt es eher nicht.
Kann es sein, dass es nicht alle wären? Dass ich noch eine dll brauche, die noch fehlt?

Was genau bedeutet "SSL-Bibliothek kann nicht geladen werden'? Was sollte da passieren?

Delphi.Narium 21. Dez 2018 16:29

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Zitat:

Zitat von NicoleWagner (Beitrag 1421667)
Danke für die Antworten:

Die Tool-Seite 'ionos' zeigt bei Eingabe des vertraulichen Links selbst es als tadellos an, cit:
SSL Zertifikat ist richtig installiert, 0 Warnungen, 0 Fehler.
Das Ziel sieht mir sauber also aus.

Was meine dll Dateien betrifft. Ich habe alle Versionen davon durch: 2013, 2017 zwei davon und 2018. Daran liegt es eher nicht.
Kann es sein, dass es nicht alle wären? Dass ich noch eine dll brauche, die noch fehlt?

Was genau bedeutet "SSL-Bibliothek kann nicht geladen werden'? Was sollte da passieren?

Und was von diesen hier wird nun unterstützt?

TSL 1, TSL 1.1, TSL 1.2, SSLv 2, SSLv 3?

Der Fehler besagt:
Delphi-Quellcode:
error: 1409442E: SSL routines:ssl3_read_bytes:tlsv1 alert protocol version


Was ist mit den vier übrigen? Schon probiert, sofern sie unterstützt werden?

Bei einigen meiner Programme muss ich explizit die "richtige" Version angeben, damit Indy und der Server der Gegenseite sich unterhalten können.

Mein Vorschlag, eine der unterstützten Versionen explizit anzugeben, kommt nicht nur so aus dem Bauch.

Funktioniert ein Ping von der Kommandozeile auf den Server, der die PDF liefern soll?

DLL kann nicht geladen werden, bedeutet, dass sie nicht gefunden wird, dass eine Schnittstelle in ihr angesprochen wird, die sie nicht enthält ...

Die SSL-Dlls werden zwar immer aktuallisiert (wenn erforderlich), aber dass sie mit den Indykomponenten nicht geladen werden können, habe ich in den letzten (gefühlten Jahrzehnten) noch nicht erlebt.

Da Du aber eine Fehlermeldung der DLLs erhalten hast, kannst Du davon ausgehen, dass sie geladen wurden, andernfalls können sie keinen Protokollfehler ausgeben.

Und wenn Du schon alle Dir vorliegenden Versionen der DLLs "durchhast", kannst Du davon ausgehen, dass das Problem nicht in den Dlls liegt und auch nicht in der Kombination mit den Indykomponenten, sondern irgendwo anders.

Da andere Software ja auch nicht an die PDF kommt, liegt das Problem (vermutlich) sehr viel tiefer.

Mal als Vorschlag:

Eine neue Anwendung erstellen.
'ne TidHTTP-Komponente auf's Formular pappen.
Doppelklick auf's Formular.
Im erzeugten FormCreate ein paar Zeilen Quelltext einfügen:
Delphi-Quellcode:
procedure Form1.FormCreate(Sender: TObject);
begin
  ShowMessage(idHTTP1.Get('https://www.delphipraxis.net/'));
end;
Programm starten.

Was kommt dabei raus?

Inhalt von ShowMessage kann per Strg+C kopiert und hier zwischen Code-Tags eingefügt werden.

Alternativ als Screenshot hier anhängen.

NicoleWagner 22. Dez 2018 12:48

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
So eine Komponente habe ich nicht. (Delphi XE 3)
Wenn ich die Komponenten in der Design-Zeit Ansicht listen lasse, so finde ich unter Internet lediglich: TWebBrowser.

Klingt nach einer heißen Spur.

TSL 1, TSL 1.1, TSL 1.2, SSLv 2, SSLv 3.... ich konnte das aus dem Link nicht ablesen.

Delphi.Narium 22. Dez 2018 13:06

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Zitat:

Zitat von NicoleWagner (Beitrag 1421667)
Die Tool-Seite 'ionos' zeigt bei Eingabe des vertraulichen Links selbst es als tadellos an, cit:
SSL Zertifikat ist richtig installiert, 0 Warnungen, 0 Fehler.

Kurz dadrunter gib's 'nen Button Details anzeigen.

Wenn man den anklickt, gibt es sehr detailreiche Informationen zur Seite.

Im Abschnitt Serverkonfiguration sind dann u. a. Aktive Protokolle zu finden.

Und was ist jetzt bitte aus dem Ping geworden, funktioniert das?

TIdHttp ist nicht unter Internet zu finden, sondern unter Indy-Clients. Und die waren schon unter Delphi 7 vorhanden. Würd' mich wundern, wenn Delphi XE3 die nicht kennt, ggfls. mal bei den Packages schauen, ob und was da so installiert ist.

NicoleWagner 22. Dez 2018 14:48

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
jawoll, dort isse.
Ich hatte die ganze Indy-Sache ausgeblendet, daher fand es auch die Suche durch die Komponenten nicht.
Also die Komponente klebt jetzt, doch die Laufzeit will nocht nicht.

Ich kann damit auch so gar nicht umgehen, weil ich sie nie nutzte.
Ratlos lese ich bei dieser Zeile:
ShowMessage(idHTTP1.Get('https://www.delphipraxis.net/'));
=> 'Im Project_donwlad_Url ist eine Exception der Klasse EIdIOHandlerropInvelid mit der Meldung 'Wert für IOHander ist ungültig' aufgetreten.'


ad 'Details anzeigen' / berifft die andere Seite:
Dort kam ich entweder nicht weiter oder es standen dort Daten meines Partners, die ich hier nicht posten kann. Sein Zertifikat und Firmendaten etc.

Ich hoffe, wir kommen bei der Komponente weiter.


ad ping: es lässt sich die Domain anbingen, nicht jedoch die Datei selbst oder deren Oberverzeichnis. Doch das will nichts heißen, denke ich. Vom pingenden Rechner kann FF die Datei anzeigen. Also ist sie da.

Delphi.Narium 22. Dez 2018 15:07

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Du entwickelst doch in einer VM. Das Pingen muss aus der VM heraus funktionieren. Wenn der Hostrechner der VM erfolgreich ein Ping absetzen kann, heißt das noch lange nicht, dass das auch aus der VM funktioniert.

Dateien kann man nicht anpingen, sondern nur Rechner, IP-Adressen, Domänen.

Solange es nicht aus der VM heraus funktioniert und die Ping-Ergebnisse aus der VM nicht mit denen vom Hostrechner vergleichbar sind, ist jeder andere Versuch der Problemlösung unsinnig und nicht zielführend.

Wenn Du mit dem Ping aus der VM heraus erfolgreich bist, kannst Du an die Behebung der Exception gehen.

Dazu pappe bitte noch 'ne Komponente TIdSSLIOHandlerSocketOpenSSL (oder so ähnlich im Namen) aufs Formular und trage diese im Objektinspektor für die TIdHttp-Komponente bei der Eigenschaft IOHandler ein.

Dann erneut probieren und berichten, was beim ShowMessage rauskommt.

NicoleWagner 22. Dez 2018 18:23

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
ping ist in allen Fällen positiv:
host: TTL = 54
VM: TTL = 128

habe die IP Nummer angepingt, durch die ich mittlerweile die Domain ersetzt habe.


zu TIdSSLIOHandlerSocketOpenSSL habe ich unter dem Reiter Indy nichts gefunden, was irgendwie ähnlich aussieht.

Drücke ich auf die Eigenschaft Handler bei dHTTP auf F1 lese ich (und verstehe kein Wort):
Data.Cloud.CloudAPI.TCloudHTTP.IOHandlerAus RAD Studio VCL Reference
Übergeordnet: TCloudHTTP
property IOHandler: IIPSSLIOHandlerSocketOpenSSL read GetIOHandler write SetIOHandler;

Ich fürchte, ich arbeite nicht mit Properties. Bin hier leider gar nicht schlau.

DieDolly 22. Dez 2018 18:26

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Zitat:

zu TIdSSLIOHandlerSocketOpenSSL habe ich unter dem Reiter Indy nichts gefunden, was irgendwie ähnlich aussieht.
Wenn ich überlege welche Probleme noch so auf dich zukommen und mit welch minimalem Aufwand du dein Projekt auf 10.3 porten könntest ...

Delphi.Narium 22. Dez 2018 18:58

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Mein Delphi hat 'nen Reiter Indy I/O-Handlers. Da gibt es auch eine Komponente mit 'nem geschlossenen Vorhängeschloss, mit hellem Hintergrund (die Variante mit dunklem Hintergrund ist für Server gedacht).

Mein Delphi hat im Menü Ansicht 'nen Eintrag Komponentenliste.
Wenn man die anzeigt, so kann man in ihr oben den Namen der Komponente eingeben, bzw. Teile davon. Sie sucht einem dann das passende oder ähnliches raus. Mit Doppelklick auf die Komponente in der Liste wird sie dann eingefügt. Die Suche dadrin ist einfacher, als das Durchforsten aller Palettenreiter, insbesondere, wenn man nicht weiß, wo ein Komponente "vergraben" ist. Eigentlich nutze ich immer die, durch die Reiter zu wühlen ist mir zu umständlich.

NicoleWagner 22. Dez 2018 19:22

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Indy habe ich davor noch nie gebraucht.
Danke für die Hinweise auf die Kathegorie. Nur leider ist die Fehlermeldung jetzt wieder die alte: "SSL Bibliothek konnte nicht geladen werden".
Sie heißt jettz ESSCouldNotLoadLibrary (oder so ähnlich)

DieDolly: Wieso denkst Du, dass die Installation von zig Fremdkomponenten ein minimaler Aufwand wäre? Abgesehen vom astronomischen Preis für alle zusammen.

TiGü 22. Dez 2018 19:29

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Man kann Messageboxen mit Fehlermeldungen übrigens wunderbar mit Strg+C kopieren und demzufolge nicht immer unvollständig und fehlerhaft abschreiben.

Delphi.Narium 22. Dez 2018 19:38

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Befinden sich die DLLs im gleichen Verzeichnis, wie die Exe?

Ggfls. das Programm mal nicht aus der IDE starten, sondern über den Explorer.

Oder bei den Startparametern (im Menü Start der IDE) beim Arbeitsverzeichnis explizit das Verzeichnis angeben, in dem, sich die Exe befindet.

NicoleWagner 22. Dez 2018 20:11

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Ja, die dlls sind im richtigen Verzeichnis.

Meine Message-Boxen lassen sich nicht kopieren. Text ist nicht markierbar.
Glaube mir, sonst würde ich ;-)
Das Abschreiben nervt.

Delphi.Narium 22. Dez 2018 20:21

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
ShowMassage kopieren:

Es muss nix markiert werden, einfach nur Strg+C drücken und hier mit Strg+V einfügen.

Sieht dann ungefähr so aus:
Code:
---------------------------
Programmtitel
---------------------------
Meldungstext
---------------------------
OK  
---------------------------
Du hattest schonmal die Fehlermeldung
Delphi-Quellcode:
error: 1409442E: SSL routines:ssl3_read_bytes:tlsv1 alert protocol version
Weißt Du noch unter welcher Konstellation, welche DLLs da wo lagen?
Wenn ja, versuche bitte diesen Zustand wieder herzustellen und starte das Programm dann nochmal.

NicoleWagner 28. Dez 2018 21:06

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Wo Du recht hast, hast Du recht, danke für den Tipp!
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project_Download_Url.exe ist eine Exception der Klasse EIdOSSLUnderlyingCryptoError mit der Meldung 'Fehler beim Verbinden mit SSL.
error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------


Das sind jetzt die allerletzten Versionen der 64 bit Compilierung und auch 64 bit dlls mit dem Quellcode:

procedure TForm1.FormCreate(Sender: TObject);
var
DL: THTTPFileDownload;
begin
DL := THTTPFileDownload.Create(nil);
try
DL.DownloadFile('https://*leider vertraulich*.pdf','C:\.....pdf');

// DL.DownloadFile('http:\\www.meinwebserver.com\test\test.zip', 'C:\Temp\test.txt');
finally
DL.Free;
end;
end;

Dieser Fehler tritt auch auf, wenn ich das Programm abbreche und aus der Source neu erzeuge.
Eine andere Fehlerquelle kann noch entstanden sein, dass ich auf 32 bit umgestellt habe, weil meine IDE bei 64 muckte bezüglich der einen Unit und ich danach falsche dlls hatte. Doch das sollte jetzt behoben sein und alles auf 64 bit gesetzt (was ich unbedingt braucht für das Gesamtprojekt)

Michael II 28. Dez 2018 23:17

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Du schreibst in #1, dass
UrlDownloadToFile(nil, PChar('https://...' ), PChar('...'), 0, nil);
nicht mehr funktioniert.

Weiter schreibst du, dass du IE aktualisiert hast auf Version 11 und dass der Download deiner Datei auch via IE11 nicht klappt. Du musst dies fixen, dann sollte auch UrlDownloadToFile wieder funktionieren. (lokale Firewall etc. prüfen)

Hast du diese Info von m$ gelesen?
https://support.microsoft.com/de-ch/...-2-0-and-tls-1


Du könntest natürlich auch irgend eine nicht geheime Datei auf deinen Server hochladen und die Adresse hier posten, damit wir testen können, ob es an deinem Webserver liegt. Ich glaube eher nicht.

NicoleWagner 29. Dez 2018 12:22

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
jetzt wird die Spur heiß.
Einiges zum Verständnis dämmert mir jetzt, doch ein Licht ist mir damit noch nicht aufgegangen.
Erstmal habe ich Infos zu den Protokollen (nein, leider, es ist nicht meine eigene Site, die hätte 24 Stunden Support):

Aktive Protokolle
TLS 1.2

Inaktive Protokolle
TLS 1.1
TLS 1.0
SSLv2
SSLv3

Spannend ist dieser Satz von Deinem MS Link, das mir zuvor entging: "Verwendung von clientseitigen Zertifikaten eine HTTPS-Verbindung über TLS 1.2 müssen Sie SSL 2.0 deaktivieren". Wo geht das bloß? Ich habe alle Karteireiter des ie durch, doch finde nichts. Wenn das standardmäßig deaktiviert ist, ist das ganz sicher eine Blockade.

Dalai 29. Dez 2018 15:08

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Soweit ich weiß, ist SSL 2.0 (und IIRC auch SSL 3.0) bei IE11 standardmäßig sowieso deaktiviert - ersteres steht auch so auf der von Michael II verlinkten MS-Seite.

Um aber die Frage zu beantworten: Die Einstellungen zur Verschlüsselung befinden sich in Systemsteuerung > Internetoptionen > Register Erweitert > Abschnitt Sicherheit (fast ganz unten). Ich bin mir ziemlich sicher, dass auch bei dir nur TLS 1.0, 1.1 und 1.2 aktiviert sind.

Grüße
Dalai

Delphi.Narium 29. Dez 2018 15:19

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Die Fehlermeldung
Code:
error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol versio
besagt, dass es ein Problem mit SSL v3 gibt. Wir wissen aber, dass der Server "nur und ausschließlich" TLS 1.2 unterstützt.

Es muss also erstmal die Stelle gefunden werden, an der gesagt wird: "Stelle eine Verbindung zwingend mit TLS 1.2 her."

Weiter oben hatte ich einen dementsprechenden Vorschlag schonmal für die Indykomponenten gemacht.

Es gibt leider einige Server, mit denen kann man nix aushandeln, da muss man angeben, welche TLS / SSL-Variante man nutzen möchte.

Hilft für den IE eventuell eine dieser Seiten?
https://warwick.ac.uk/services/its/s...p/tls1-eol/ie/
https://www.bahn.de/micro/view/tls/tls-webbrowser.shtml
Ansonsten bitte hier schauen, ob noch wer 'nen erfolgversprechenden Hinweis / Tipp hat:
https://www.google.com/search?q=ie+tls+1.2&btnG=Suche

Den IE ggfls. so konfigurieren, dass er nur TLS 1.2 nutzt. (Das kann man ja später ggfls. wieder ändern.)

Um das Delphi-Problem kümmern wir uns erst wieder, wenn Du uns das erfolgreiche Laden der PDF-Datei via IE bestätigt hast. Vorher ist das zwecklos.

PS:

Die SSL-Komponente von Indy nutzt standardmäßig kein TLS 1.2.
Da im Constructor von THTTPFileDownload aber nur das Create der SSL-Komponente aufgerufen wird und keine weiteren Protokolleinstellungen erfolgen, wird kein TLS 1.2 genutzt, es kann also keine Einigung über das zu nutzende Protokoll zwischen Client und Server erfolgen. Der Constructor von THTTPFileDownload muss um die Zeile
Delphi-Quellcode:
IOHndl.SSLOptions.SSLVersions := [sslvTLSv1_2];
ergänzt werden, dann "kann er nur" das vom Server geforderte TLS 1.2.

NicoleWagner 29. Dez 2018 18:51

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Ich habe jetzt (danke Dalai!) TLS 1.2 als einziges aktiviert.
Und bin einen Schritt weiter und zwar sehe ich eine neue Fehlermeldung im IE, die da lautet:

Es besteht ein Problem mit dem Sicherheitszertifikat der Website.
Klicke ich auf "trotzdem öffnen", lese ich sowas wie: "das Zertifikat wurde für eine andere Website ausgestellt".
Danach schlägt sich der Browser mit der Version des pdf-Software herum, doch das wäre eine andere Baustelle. Mit 99%iger Chance könnte ich die Datei also mit "weiter" und "trotzdem öffnen" mit vielen Klicks öffnen.
Da Delphi diese Klicks nicht tut, sperrt mit hoher Wahrscheinlichkeit das Zertifikat im IExplore.

Ich habe jetzt die Domain und die IP unter "vertrauenswürdige Websites" eingetragen. Half nicht.

Auf "gesperrte Zerrifikate überprüfen" habe ich deaktiviert, ebenso wie "auf gesperrte Serverzertifikate überprüfen"
(das geht auf der VM, sie darf ohnehin nicht ins Internet, weil zu offen konfiguriert). Half nicht.

Danke für die Zeile im Code, die werde ich sicher einfügen!
Doch vorher scheint mir der ie die Sache abzuwürgen wegen des Zerfikates.
Wie kann ich ihn "beruhigen"? Ich probierte, das Zertifikat zu importieren, doch da ich das nicht wirklcih kann, denke ich, es hat eher nicht geklappt als schon.

Delphi.Narium 29. Dez 2018 19:35

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Habe keine Ahnung, wie Indy mit den Zertifikatsprobleme umgeht.

Alleine die Tatsache, dass Du derartige Fehlermeldungen bekommst, bedeutet aber schonmal: Der sich der IE und der Server, der die PDF zu liefern hat, unterhalten können. Die auftretenden Probleme sind wohl eher auf eine nicht wirklich optimale Konfiguration des Servers zurückzuführen.

Hier könnte jetzt aber ein Versuch mit den Indy-Komponenten eventuell erfolgreich sein.

Ein bisserl Info eventuell hier:
http://germanylandofinnovation.com/q...zertifikat-ssl
https://stackoverflow.com/questions/...ertificate-ssl
https://forums.embarcadero.com/threa...hreadID=118720

Mir scheint, dass man mit den Indys und OpenSSL die Zertifikatsprüfung ignorieren / überspringen kann, so dass dort das Zertifikatsproblem nicht auftritt. Wäre einen Versuch wert.

Was sagt Dir denn jetzt THTTPFileDownload mit der zusätzlichen Zeile
Delphi-Quellcode:
IOHndl.SSLOptions.SSLVersions := [sslvTLSv1_2];
?
Funktioniert es so eventuell schon, wenn nein, welche Fehlermeldung bekommst Du?

NicoleWagner 29. Dez 2018 21:41

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
---------------------------
Project_download_url
---------------------------
Fehler beim Verbinden mit SSL.
error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version.
---------------------------
OK
---------------------------

ein kleiner Schritt weiter, denn ich kann jetzt einmal https anzeigen.

// ShowMessage(idHTTP1.Get('https://www.delphipraxis.net/')); => das wir jetzt erstmals angezeigt!!
ShowMessage(idHTTP1.Get('https://192.124.xxxxx/....pdf')); => das erzeugt obige Fehlermeldung

Ich könnte mir vorstellen, dass irgendeine Sicherheitseinstellung des Systems das Problem ist. Der IE unter Win 7 war noch immer ganz tief im System vernetzt. Ich hatte da vor Jahren unglaubliche Probleme mit einem Programm, das der Support mit einer Konfiguration im IE gelöst hatte, die mir ganz komisch vorkam.
Dieses Zertifikat ist aus Ami-Land von Go Daddy. Es besteht auf ionos alle Prüfungen und ist von einer hochseriösen Firma aufgesetzt. Allerdings kann ich dort nicht fragen. Denn sie sind recht groß und ich bin klein. Auch will ich dort nicht sagen, dass ich die Datei, die grundsätzlich für Kundendienst / Einsicht verfügbar ist, maschinell verarbeite, auch wenn es nur für mich selbst ist.

MichaelT 29. Dez 2018 21:55

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Die Meldung muss nicht zwingend zum Fehler passen. Lass dir die Zertifikatskette anzeigen und schauen ob die Zertifikate aktuell sind. Das sorgt gerne für Verwirrung.

Kleine Anmerkung zum Download mit dem IE welche ich beim Schmökern im Netz fand. Funktion DeleteUrlCacheEntry nicht vergessen ansonsten bleibt die File im Cache und wird nicht nochmal runtergeladen.

Ansonsten viel Spaß. Verstehe einer warum man alles in eine Applikation muss einbauen. Aber gut jeder wie er will.

Ich würde mir die File so wie in dem zu Beginn geposteten Code holen.

In einer Mußestunde schaust du dir dann zumindest mal Chilikat an oder Indy in Depth.


Zitat:

Zitat von NicoleWagner (Beitrag 1422277)
Ich habe jetzt (danke Dalai!) TLS 1.2 als einziges aktiviert.
Und bin einen Schritt weiter und zwar sehe ich eine neue Fehlermeldung im IE, die da lautet:

Es besteht ein Problem mit dem Sicherheitszertifikat der Website.
Klicke ich auf "trotzdem öffnen", lese ich sowas wie: "das Zertifikat wurde für eine andere Website ausgestellt".


MichaelT 29. Dez 2018 21:57

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Dh. du probierst TLS 1.0

Zitat:

Zitat von NicoleWagner (Beitrag 1422282)
---------------------------
Project_download_url
---------------------------
Fehler beim Verbinden mit SSL.
error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version.
---------------------------
OK
---------------------------

ein kleiner Schritt weiter, denn ich kann jetzt einmal https anzeigen.

// ShowMessage(idHTTP1.Get('https://www.delphipraxis.net/')); => das wir jetzt erstmals angezeigt!!
ShowMessage(idHTTP1.Get('https://192.124.xxxxx/....pdf')); => das erzeugt obige Fehlermeldung

Ich könnte mir vorstellen, dass irgendeine Sicherheitseinstellung des Systems das Problem ist. Der IE unter Win 7 war noch immer ganz tief im System vernetzt. Ich hatte da vor Jahren unglaubliche Probleme mit einem Programm, das der Support mit einer Konfiguration im IE gelöst hatte, die mir ganz komisch vorkam.
Dieses Zertifikat ist aus Ami-Land von Go Daddy. Es besteht auf ionos alle Prüfungen und ist von einer hochseriösen Firma aufgesetzt. Allerdings kann ich dort nicht fragen. Denn sie sind recht groß und ich bin klein. Auch will ich dort nicht sagen, dass ich die Datei, die grundsätzlich für Kundendienst / Einsicht verfügbar ist, maschinell verarbeite, auch wenn es nur für mich selbst ist.


Delphi.Narium 29. Dez 2018 22:08

AW: Datei aus dem Internet herunterladen - geht nicht mehr!
 
Ist das jetzt 'ne Fehlermeldung mit THTTPFileDownload?

Bitte poste den aktuellen Quelltext Deiner Routine. Es ist momentan nicht nachvollziehbar, woher der Fehler jetzt genau kommt.

Wenn Du eine Komponente TIDHttp nutzt, hast Du ihr auch 'ne TIdSSLIOHandlerSocketOpenSSL zugewiesen und dort bei SSLOptions.SSLVersion.SSLvTSL1_2 auf True gesetzt und die übrigen auf False?

Die Fehlermeldung läßt darauf schließen, dass dem nicht so ist.

Zitat:

Zitat von MichaelT
Die Meldung muss nicht zwingend zum Fehler passen. Lass dir die Zertifikatskette anzeigen und schauen ob die Zertifikate aktuell sind. Das sorgt gerne für Verwirrung.

Kleine Anmerkung zum Download mit dem IE welche ich beim Schmökern im Netz fand. Funktion DeleteUrlCacheEntry nicht vergessen ansonsten bleibt die File im Cache und wird nicht nochmal runtergeladen.

Ansonsten viel Spaß. Verstehe einer warum man alles in eine Applikation muss einbauen. Aber gut jeder wie er will.

Ich würde mir die File so wie in dem zu Beginn geposteten Code holen.

In einer Mußestunde schaust du dir dann zumindest mal Chilikat an oder Indy in Depth.

Das das Zertifikat nicht in Ordnung ist, steht schon weiter oben, da hilft weiterforschen nicht wirklich. Der IE scheitertete bisher daran, dass er kein TLS 1.2 nutzte. Nachdem das umkonfiguriert wurde, scheitert er an veraltetem / fehlerhaft konfiguriertem Zertifikat.

Und das der zu Beginn gepostete Code in dieser Konstellation nicht funktioniert, da er kein TLS 1.2 nutzt, wurde auch festgestellt.

Also: Das Zertifikat auf dem Server ist so, wie es ist, nicht in Ordnung.
Der Server verlangt die Nutzung von TLS 1.2.

Es sollte also TLS 1.2 genutzt werden und ein Weg gesucht werden, dem das Zertifikat egal ist. Auch dafür wurden entsprechende Hinweise verlinkt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 Uhr.
Seite 2 von 3     12 3      

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