AGB  ·  Datenschutz  ·  Impressum  







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

FTPS Einstellungen

Ein Thema von tkhandel · begonnen am 19. Jan 2023 · letzter Beitrag vom 10. Jul 2023
Antwort Antwort
tkhandel

Registriert seit: 2. Jan 2022
Ort: Arnsberg im Sauerland
69 Beiträge
 
Delphi 10.4 Sydney
 
#1

FTPS Einstellungen

  Alt 19. Jan 2023, 12:25
Hallo,
ich versuche mit dem folgenden Code eine Verbindung per FTPS Indy 10 Delphi 10.4
zu einem Onlinespeicher(HiDrive) bei ionos (1und1) herzustellen:

IdFTP1.Passive := true;
IdFTP1.AUTHCmd := tAuto;
IdFTP1.Host := 'ftp.hidrive.ionos.com';
IdFTP1.Username := '****';
IdFTP1.Password := '****';
IdFTP1.UseTLS := utUseExplicitTLS;
IdFTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
IdFTP1.UseTLS := utUseExplicitTLS;

IdSSLIOHandlerSocketOpenSSL1.Host := 'ftp.hidrive.ionos.com';
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvSSLv23;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmClient;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyMode := [sslvrfPeer]; // z.B.
IdSSLIOHandlerSocketOpenSSL1.Port := 21;
IdSSLIOHandlerSocketOpenSSL1.PassThrough := False;

// FTP Server connect
try
IdFTP1.Connect;
except
Memo1.Lines.Add('Fehler: Server nicht gefunden');
IdFTP1.Disconnect;
Abort;
end;
//Login wenn erfolgreich angemeldet
Memo1.Lines.Add('verbunden');
try
IdFTP1.Login;
except
Memo1.Lines.Add('Fehler: Login Fehler');
IdFTP1.Disconnect;
Abort;
end;
Memo1.Lines.Add('erfolgreich angemeldet');

Die Verbindung wird hergestellt der Login aber abgelehnt.
Zugangsdaten schon 100 überprüft woran könnte es noch liegen?
Was habe ich vergessen?
Jürgen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: FTPS Einstellungen

  Alt 19. Jan 2023, 12:39
Hallo,

UseImpliciteTLS vielleicht?
Werden vielleicht Zertifikate benötigt?
Heiko
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
247 Beiträge
 
Delphi 12 Athens
 
#3

AW: FTPS Einstellungen

  Alt 19. Jan 2023, 12:53
So habe ich es:

Zitat:
IDFTP := TidFTP.Create(XYZ);
IDFTP.IOHandler := SSLHandler;
IDFTP.UseTLS := utUseExplicitTLS;
IDFTP.DataportProtection := ftpdpsPrivate;
IDFTP.Passive := True;
IDFTP.TransferType := ftBinary;
IDFTP.AUTHCmd := tAuto;
SSLHandler.PassThrough := False;
Du kannst auch mal probieren, dem SSLIOHandler das Ereignis "OnVerfiyPeer" zu implementieren und darin einfach nur das Result := True zu setzen.
  Mit Zitat antworten Zitat
shebang

Registriert seit: 7. Feb 2020
101 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FTPS Einstellungen

  Alt 19. Jan 2023, 13:09
Die Verbindung wird hergestellt der Login aber abgelehnt.
Mit welcher Begründung wird der Login denn abgelehnt?
  Mit Zitat antworten Zitat
tkhandel

Registriert seit: 2. Jan 2022
Ort: Arnsberg im Sauerland
69 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: FTPS Einstellungen

  Alt 19. Jan 2023, 16:07
Danke erstmal
Ich bin schon mal weiter ihm/mir fehlt wohl ein Zertifikat
Fehler: routine:ss3_get_server_certificate:cetificate verifiy failed

Wo bekomme ich ein Zertifikat und wie binde ich das dann ein ?
Jürgen
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.856 Beiträge
 
Delphi 12 Athens
 
#6

AW: FTPS Einstellungen

  Alt 20. Jan 2023, 16:33
Riecht die Fehlermeldung nicht danach, dass der Server kein zertifikat geliefert hat?
  Mit Zitat antworten Zitat
Alt 6. Jul 2023, 11:38     Erstellt von golfdemand
Dieser Beitrag wurde von TBx gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
324 Beiträge
 
Delphi 12 Athens
 
#8

AW: FTPS Einstellungen

  Alt 6. Jul 2023, 11:46
Wenn ich das richtig sehe, unterstützt HiDrive nur FTP und SFTP; aber nicht FTPS. Und SFTP geht nicht mit den Indys.
  Mit Zitat antworten Zitat
mezen

Registriert seit: 13. Jul 2011
Ort: Lippstadt
30 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

AW: FTPS Einstellungen

  Alt 10. Jul 2023, 06:58
Danke erstmal
Ich bin schon mal weiter ihm/mir fehlt wohl ein Zertifikat
Fehler: routine:ss3_get_server_certificate:cetificate verifiy failed

Wo bekomme ich ein Zertifikat und wie binde ich das dann ein ?
Mit IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyMode := [sslvrfPeer] sagt du dem IO Handler, dass du das Zertifikat des Peers (da du Client bist also das Server Zertifikat) prüfen lassen willst. Da OpenSSL aber nicht den Windows Zertifikats Store nutzt, ist der OpenSSL Zertifikats Store leer und kennt keine vertrauenswürdigen Zertifikate. Dadurch schlägt die Überprüfung des Server Zertifikat fehl. Das sagt ja auch die Fehlermeldung "certificate verifiy failed".

Du hast nun mehrere Möglichkeiten:

a)
Einfach die Zertifikats Überprüfung abschalten IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyMode := [] . Damit bist du natürlich für MitM Angriffe anfällig. Wäre aber absolut valide, wenn du die Sicherheit auf andere Ebenen verlagerst.

b)
Du lädst das Server Zertifikat oder das CA Zertifikat vom Server herunter und gibst die Datei in deinem Programm mittels IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile := 'C:\Path\to\CA.crt' an. Sollte mal ein Zertifikat von einer anderen CA eingesetzt werden, schlägt die Verbindung aber, wie jetzt auch, fehl.

c)
Du enumerierst, zur Laufzeit, den Windows Zertifikat Store, konverst die gefundenen Zerts ins OpenSSL Format und trägst diese in den OpenSSL Zertifikats Store ein. So kann OpenSSL auch ganz normal die Überprüfung durchführen und du bist auf einer relativ sicheren Seite.

d)
Du machst die Zertifikats Überprüfung selber. Bitte beachte dabei nur, dass einige die Meinung vertreten, dass dies der "most dangerous code in the world" ist.



Unabhängig von deiner Lösung für die Zertifikats Validierung empfehle ich dir noch IdSSLIOHandlerSocketOpenSSL1.SSLOptions.SSLVersions = [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2] zu setzen, damit du auch TLS 1.1 und TLS 1.2 akzeptierst. Wenn du die BSI Richtlinien umsetzen willst, dann solltest du sogar nur TLS 1.2 akzeptieren IdSSLIOHandlerSocketOpenSSL1.SSLOptions.SSLVersions = [sslvTLSv1_2] . Den Wert von IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method ignorier dabei, der wird durch den Setter von SSLVersions verändert und ist eh eine veraltete Property aus Indy 9.

Dazu solltest du besser die Eigenschaften IdSSLIOHandlerSocketOpenSSL1.Host , IdSSLIOHandlerSocketOpenSSL1.Port und IdSSLIOHandlerSocketOpenSSL1.PassThrough nicht selber setzen, das setzt die FTP Komponente schon für dich. Gerade das PassThrough kann sogar hinderlich sein!
  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 02:41 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