* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Luglio 04, 2022, 05:34:33 pm

Inserisci il nome utente, la password e la durata della sessione.

6 Visitatori, 3 Utenti
   

Autore Topic: FTPS con Indy e Filezilla server  (Letto 410 volte)

Mimmo

  • Jr. Member
  • **
  • Post: 51
  • Karma: +0/-0
FTPS con Indy e Filezilla server
« il: Aprile 06, 2022, 05:21:01 pm »
Ciao a tutti,
sto cercando di istanziare una connessione via ftps con un server filezilla (l'ultimo rilasciato, 1.3.0).
Mi sono appoggiato alle Indy, anche queste aggiornate all'ultima versione disponibile.
La connessione viene creata con successo ma quando provo a fare il list dei file mi arriva un bell'errore: "Unable to build data connection: TLS session of data connection not resumed.".
Il codice che crea la connessione è quello qui sotto. La versione delle dll openssl sotto windows è la 1.0.2u. Ho provato anche su linux ottenendo il medesimo risultato.

Codice: [Seleziona]
function TMiaClasse.CreateConnection: TIdFTP;
begin
  Result := TIdFTP.Create(nil);
  {$IFDEF LINUX}
  // https://synaptica.info/2021/01/12/delphi-10-4-1-indy-ssl-on-ubuntu-20-04/
  IdOpenSSLSetLibPath(ProgramDirectory);
  {$ENDIF}
  Result.Host:= FHost;
  Result.Username:= FUsername;
  Result.Password:= FPassword;
  if FUseFTPS then
  begin
    if not Assigned(FSSLIoHandler) then
    begin
      FSSLIoHandler := TIdSSLIOHandlerSocketOpenSSL .Create(nil);
      FSSLIoHandler.SSLOptions.Method := sslvTLSv1_2;
    end;
    Result.IOHandler:= FSSLIoHandler;
    Result.UseTLS := utUseExplicitTLS;
    Result.DataPortProtection := ftpdpsPrivate;
  end;
end;

Da quello che capisco il problema è che Filezilla ha abilitato di default la session resumption ormai obbligatoria per le connession FTPS.
Non sono riuscito a capire se le Indy la supportano oppure no e come fare per abilitarla.
Mi sembra che la risposta sia che non la supportano però in questo  post qui https://en.delphipraxis.net/topic/6114-tls-with-filezilla-ftp-server-tls-data-session-not-resumed/  mi pare di intendere che chi scrive sia riuscito a far andare il collegamento con le Indy.

Qualcuno di voi ha mica avuto modo di affrontare un problema simile?
Grazie!

Mimmo

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 625
  • Karma: +11/-0
  • Prima ascoltare, poi decidere
Re:FTPS con Indy e Filezilla server
« Risposta #1 il: Aprile 06, 2022, 06:36:30 pm »
Uhmm ... secondo me potrebbe esse che l'IOHandler non lo stai usando correttamente. Non sò in FTPS, ma HTTPS và gestita la connessione SSL in un altro modo, .... fammi fare una verifica e poi ti posto la probabile soluzione ....

:) Ogni alba è un regalo, ogni tramonto è una conquista :)

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 625
  • Karma: +11/-0
  • Prima ascoltare, poi decidere
Re:FTPS con Indy e Filezilla server
« Risposta #2 il: Aprile 06, 2022, 08:17:39 pm »
Il problema è descritto qua:

https://forum.filezilla-project.org/viewtopic.php?p=178773

Prova questo (ma devi farlo sul SERVER ritengo, se è un server Windows ... altrimenti bisogna seguire il bug tracking), dovrebbe disattivare il TLS 1.3 a seguito del bug segnalato:

Citazione
Open regedit.exe
Create this key if it doesn't exist yet:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client
Create a new DWORD (32) Value:
Enabled
Set the value to 0x0

Non ho letto tutti i riferimenti, ma probabilmente il "componente" che gestisce la connessione TLS, se abilitato 1.3 non la gestisce correttamente (se usi la SSL 1.0.2 non hai il TLS 1.3, ma sembra che lo stesso ci sia il problema).

Appena ho un attimo di tempo metto su un server pubblico FTPS e provo.

Ciao
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 625
  • Karma: +11/-0
  • Prima ascoltare, poi decidere
Re:FTPS con Indy e Filezilla server
« Risposta #3 il: Aprile 06, 2022, 10:57:13 pm »
https://cloud.dyn-o-saur.com/Ftps_Indy.zip

Tasto destro del mouse e salva il link sopra iindicato.

EDIT: il sito "cloud.dyn......" è mio e il programma e fatto da me. Non ci sono virus, trojan o altro. Le dll sono quelle pubbliche SSL 1.0.2u

Ehm .... è per Windows, dimmi se dopo il test (positivo  :D ) ti serve per Linux.

E' un eseguibile a 64 bit con le lib SSL che esegue una connessione di test con un TLS 1.0, 1.1, 1.2

E' fatto con Indy, ha già i dati di un server di test.

Immetti i dati del tuo server e verifica la connessione.

Se ti funziona te lo converto in Lazarus.

Ciao
« Ultima modifica: Aprile 06, 2022, 11:06:43 pm da DragoRosso »
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

Mimmo

  • Jr. Member
  • **
  • Post: 51
  • Karma: +0/-0
Re:FTPS con Indy e Filezilla server
« Risposta #4 il: Aprile 07, 2022, 06:24:45 pm »
Ciao DragoRosso,
innanzitutto grazie!!!
Ho provato a inserire le chiavi di registro sul pc su cui è installato filezilla e l'ho riavviato ma il problema purtroppo non si è risolto.
Ho provato poi ad utilizzare il tuo applicativo per collegarmi alla macchina (sempre con la nuova chiave di registro presente) ed ha restituito il medesimo messaggio di errore del mio applicativo: "tls session of data connection not resumed".
Non so se è un problema di server filezilla o di mancata implementazione della resumption nelle Indy, forse entrambe le cose: le Indy non la implementano e il server Filezilla non da più la possibilità di disabilitarla.
Il dubbio che non sia solo un baco di Filezilla mi viene dal fatto che se mi collego al server con lftp da linux, con quello riesco a leggere e scrivere senza errori (anche se il certificato, essendo auto-generato, non posso farglielo validare).
Mi sa che dovrò trovare un'alternativa a filezilla che ci consenta di funzionare senza resumption...

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 625
  • Karma: +11/-0
  • Prima ascoltare, poi decidere
Re:FTPS con Indy e Filezilla server
« Risposta #5 il: Aprile 07, 2022, 07:34:40 pm »
Cosa ti dà il mio applicativo nel log? io c'è l'ho così sul server di test.

Da quel che vedo la "riconnection" avviene (rebex è chi aveva segnalato il bug di FileZilla e del GNU....)

(mio applicativo per dire, è una demo di Indy adattata per usare OpenSSL  ;D).
« Ultima modifica: Aprile 07, 2022, 07:36:31 pm da DragoRosso »
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 625
  • Karma: +11/-0
  • Prima ascoltare, poi decidere
Re:FTPS con Indy e Filezilla server
« Risposta #6 il: Aprile 07, 2022, 07:44:35 pm »
Il dubbio che non sia solo un baco di Filezilla mi viene dal fatto che se mi collego al server con lftp da linux, con quello riesco a leggere e scrivere senza errori (anche se il certificato, essendo auto-generato, non posso farglielo validare).
Mi sa che dovrò trovare un'alternativa a filezilla che ci consenta di funzionare senza resumption...

In che senso "non posso farglielo validare" ? Occhio che potrebbe invece essere che il certificato non venga accettato dal client .... Il certificato deve sempre essere validato. Dovrebbe comparire una richiesta di consenso a proseguire se il certificato presenta problemi o in alternativa dovrebbe essere generato un errore.

Nel programma che ho postato, se la sessione TLS non può avvenire dovrebbe generare un errore nel log.

Ciao
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 625
  • Karma: +11/-0
  • Prima ascoltare, poi decidere
Re:FTPS con Indy e Filezilla server
« Risposta #7 il: Aprile 07, 2022, 10:10:57 pm »
Questa è la connessione con un server filezilla 1.3.0 su windows x64 tramite il programmino che ti ho fornito.
Tls 1.2 ESPLICITA !!!

Edit: Server e Client sono su due PC diversi.

Ciao
« Ultima modifica: Aprile 07, 2022, 10:13:46 pm da DragoRosso »
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

Mimmo

  • Jr. Member
  • **
  • Post: 51
  • Karma: +0/-0
Re:FTPS con Indy e Filezilla server
« Risposta #8 il: Aprile 08, 2022, 11:25:14 am »
Ciao,
ti allego quello che ottengo io.
Visto che a te funziona, oggi pomeriggio se riesco provo a fare una prova fuori dalla intranet aziendale. M'è venuto il dubbio che il firewall possa fare qualche trusco sui certificati.. è solo un dubbio, sono un po' ignorante in materia.
Cmq grazie!

PS
Il certificato che sto usando è self-signed, è solo per fare dei test. Per pigrizia non l'ho aggiunto sul client linux nei certificati "fidati".

Mimmo

  • Jr. Member
  • **
  • Post: 51
  • Karma: +0/-0
Re:FTPS con Indy e Filezilla server
« Risposta #9 il: Aprile 08, 2022, 12:02:26 pm »
Ciao,
aggiornamento: ho aggiunto il valore che mi hai indicato anche a questa chiave di registro:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3
Riavviato e ora il tuo programma si connette!
Il mio invece no, stesso errore di prima, però vuol dire che ora c'è qualche mio errore e che il tuo workaround con filezilla è effettivamente funzionante.
Vado avanti....

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 625
  • Karma: +11/-0
  • Prima ascoltare, poi decidere
Re:FTPS con Indy e Filezilla server
« Risposta #10 il: Aprile 08, 2022, 12:09:40 pm »
Ok, allora ti converto in Lazarus il programma, così vedi i setting ....

Pazienza un attimo (anche qualche attimo ...) e lo posto.

Ciao.
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 625
  • Karma: +11/-0
  • Prima ascoltare, poi decidere
Re:FTPS con Indy e Filezilla server
« Risposta #11 il: Aprile 08, 2022, 04:29:42 pm »
Ecco il programma x Lazarus.

https://cloud.dyn-o-saur.com/FtpClient.zip

E' stato fatto il porting dello stretto necessario e la parte grafica non è completa. C'è anche l'eseguibile già compilato (sotto BIN)
Ti consente di collegarti e di verificare i componenti ed i parametri usati per la connessione.

E' stato verificato con un server FTP Filezilla 1.3.0 con ssl privato.
Ciao
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

Mimmo

  • Jr. Member
  • **
  • Post: 51
  • Karma: +0/-0
Re:FTPS con Indy e Filezilla server
« Risposta #12 il: Aprile 13, 2022, 01:04:55 pm »
DragoRosso,
grazie di tutto il supporto!
Ho reimpostato tutti i parametri esattamente come nella tua applicazione ma non sono comunque riuscito a venirne a capo.
Ho ricompilato il tuo programma di test esattamente con le indy che uso io e fatte altre manovre da programmatore disperato ma il risultato non è cambiato.
Alla fine ho pensato di risolverla in un altro modo: visto che ho ancora margini per modificare l'infrastruttura ho messo su un vsftpd installato su un server ubuntu.
Con quello sia l'ftps fatto dal tuo programma sia quello del mio applicativo funzionano perfettamente con tutte le loro belle connessioni criptate e quindi direi che passeremo a linux.
Grazie ancora!


« Ultima modifica: Aprile 13, 2022, 01:06:47 pm da Mimmo »

 

Recenti

How To

Utenti
Stats
  • Post in totale: 16432
  • Topic in totale: 2007
  • Online Today: 16
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 3
Guests: 6
Total: 9

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.