Certificat avec serveur FTP

Certificat avec serveur FTP - Sécurité - Systèmes & Réseaux Pro

Marsh Posté le 15-03-2012 à 09:29:47    

Bonjour,
 
J'ai mis en place sur une Debian un serveur FTP (ProFTPd) avec le module TLS.
 
J'aimerais que la connexion soit le plus sécurisé possible. Et donc mettre en place un système de clé privé / clé publique. Lorsque ma directive TLSVerifyClient est à Off, la connexion avec mon Filezilla fonctionne (paramétré en FTPS). Mais lorsque je passe la directive TLSVerifyClient à On, la connexion avec mon Filezilla échoue.
 
Dans Filezilla j'ai ça :

Code :
  1. Statut : Connexion à x.x.x.x:21...
  2. Statut : Connexion établie, attente du message d'accueil...
  3. Réponse : 220 ProFTPD 1.3.3a Server ready.
  4. Commande : AUTH TLS
  5. Réponse : 234 AUTH TLS exécuté avec succès
  6. Statut : Initialisation de TLS...
  7. Erreur : GnuTLS error -53: Error in the push function.
  8. Erreur : Impossible d'établir une connexion au serveur


 
Et dans le proftpd/tls.log :

Code :
  1. mars 14 16:22:12 mod_tls/2.4.2[4896]: TLSOption EnableDiags enabled, setting diagnostics callback
  2. mars 14 16:22:12 mod_tls/2.4.2[4896]: TLS/TLS-C requested, starting TLS handshake
  3. mars 14 16:22:12 mod_tls/2.4.2[4896]: [info] accepting: before/accept initialization
  4. mars 14 16:22:12 mod_tls/2.4.2[4896]: [info] accepting: SSLv2/v3 read client hello A
  5. mars 14 16:22:13 mod_tls/2.4.2[4896]: [msg] received TLSv1 'ClientHello' Handshake message (106 bytes)
  6. mars 14 16:22:13 mod_tls/2.4.2[4896]: [info] accepting: SSLv3 read client hello A
  7. mars 14 16:22:13 mod_tls/2.4.2[4896]: [msg] sent TLSv1 'ServerHello' Handshake message (81 bytes)
  8. mars 14 16:22:13 mod_tls/2.4.2[4896]: [info] accepting: SSLv3 write server hello A
  9. mars 14 16:22:13 mod_tls/2.4.2[4896]: [msg] sent TLSv1 'Certificate' Handshake message (881 bytes)
  10. mars 14 16:22:13 mod_tls/2.4.2[4896]: [info] accepting: SSLv3 write certificate A
  11. mars 14 16:22:13 mod_tls/2.4.2[4896]: [msg] sent TLSv1 'ServerKeyExchange' Handshake message (397 bytes)
  12. mars 14 16:22:13 mod_tls/2.4.2[4896]: [info] accepting: SSLv3 write key exchange A
  13. mars 14 16:22:13 mod_tls/2.4.2[4896]: [msg] sent TLSv1 'CertificateRequest' Handshake message (138 bytes)
  14. mars 14 16:22:13 mod_tls/2.4.2[4896]: [info] accepting: SSLv3 write certificate request A
  15. mars 14 16:22:13 mod_tls/2.4.2[4896]: [info] accepting: SSLv3 flush data
  16. mars 14 16:22:13 mod_tls/2.4.2[4896]: [msg] received TLSv1 'Certificate' Handshake message (7 bytes)
  17. mars 14 16:22:13 mod_tls/2.4.2[4896]: [msg] sent TLSv1 fatal 'handshake_failure' Alert message (2 bytes)
  18. mars 14 16:22:13 mod_tls/2.4.2[4896]: [info] writing: SSL/TLS alert fatal: handshake failure
  19. mars 14 16:22:13 mod_tls/2.4.2[4896]: [info] accepting: SSLv3 read client certificate B
  20. mars 14 16:22:13 mod_tls/2.4.2[4896]: [info] accepting: SSLv3 read client certificate B
  21. mars 14 16:22:13 mod_tls/2.4.2[4896]: unable to accept TLS connection: protocol error:
  22. (1) error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer did not return a certificate
  23. mars 14 16:22:13 mod_tls/2.4.2[4896]: TLS/TLS-C negotiation failed on control channel
  24. mars 14 16:22:13 mod_tls/2.4.2[4896]: [stat]: SSL sessions attempted: 1
  25. mars 14 16:22:13 mod_tls/2.4.2[4896]: [stat]: SSL sessions established: 0
  26. mars 14 16:22:13 mod_tls/2.4.2[4896]: [stat]: SSL sessions renegotiated: 0
  27. mars 14 16:22:13 mod_tls/2.4.2[4896]: [stat]: SSL sessions resumed: 0
  28. mars 14 16:22:13 mod_tls/2.4.2[4896]: [stat]: SSL sessions in cache: 0
  29. mars 14 16:22:13 mod_tls/2.4.2[4896]: [stat]: SSL session cache hits: 0
  30. mars 14 16:22:13 mod_tls/2.4.2[4896]: [stat]: SSL session cache misses: 0
  31. mars 14 16:22:13 mod_tls/2.4.2[4896]: [stat]: SSL session cache timeouts: 0
  32. mars 14 16:22:13 mod_tls/2.4.2[4896]: [stat]: SSL session cache size exceeded: 0


 
Mon fichier proftpd/tls.conf

Code :
  1. <IfModule mod_tls.c>
  2. TLSEngine on
  3. TLSLog /var/log/proftpd/tls.log
  4. TLSProtocol SSLv23
  5. TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
  6. TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
  7. TLSCACertificateFile /etc/ssl/certs/ca.pem
  8. TLSOptions EnableDiags
  9. TLSVerifyClient off
  10. TLSRequired on
  11. #TLSRenegotiate required off
  12. </IfModule>


 
J'ai importé la clé privé dans Filezilla, mais apparemment cela ne marche pas :/
 
D'avance merci pour les réponses,

Reply

Marsh Posté le 15-03-2012 à 09:29:47   

Reply

Marsh Posté le 15-03-2012 à 11:03:03    

C'est surtout qu'il te faut un certificat sur ton client là.
Tu fais de l'authentification mutuelle (le client identifie le serveur et le serveur identifie le client)

Reply

Marsh Posté le 15-03-2012 à 11:15:13    

Bonjour Jen@b,
 
Merci pour ta réponse! On est d'accord le problème vient du client... Seulement la je bug sur le fonctionnement...
 
Dans Filezilla, j'importe une clé privée que je génère avec PuttyGen...j'avais oublié de le préciser, mais j'ai tout de même l'erreur :/

Reply

Marsh Posté le 15-03-2012 à 11:18:01    

Faut que tu génères un certificat sur ton client qui soit trusté par ton serveur, pas une clé privée. (même si le certificat at été signé par une clé privée sur ton poste)


Message édité par Je@nb le 15-03-2012 à 11:18:19
Reply

Marsh Posté le 15-03-2012 à 11:27:26    

Je vais faire mon lourd... désolé :/
Sur le serveur Proftpd j'ai généré les clés avec Openssh.
Côté client, qu'est-ce qu'il me reste à faire ? Quand tu dis que je dois générer un certificat qui soit trusté par ton serveur... Comment réalisé cette étape ?
 
Désolé des questions, je bug un peu :/

Reply

Marsh Posté le 15-03-2012 à 11:45:24    

Pourquoi tu génères des clés avec openssh ? C'est quoi le rapport ?
 
Tu as généré un certificat sur ton serveur /etc/proftpd/ssl/proftpd.cert.pem suffit d'en générer un pour client.
Comment générer un certificat bah selon la même méthode que tu as utilisé sur ton serveur

Reply

Marsh Posté le 15-03-2012 à 13:06:18    

Openssl autant pour moi...
Je vais essayer d'être plus clair sur mon problème. Sur mon serveur j'ai fait ça :

Code :
  1. openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/openssl/proftpd.cert.pem -keyout /etc/proftpd/openssl/proftpd.key.pem


 
Est-ce qu'il faut que je récupère un de ces fichiers là ? Ou que j'en génère un nouveau ? J'ai du mal à faire la différence entre ces deux fichiers en fait. J'ai déjà essayer de récuperer les fichiers générés par openssl dans filezilla, il les convertit mais la connexion ne fonctionne toujours pas :/
 
Merci et vraiment désolé de faire le boulet.

Reply

Marsh Posté le 15-03-2012 à 13:19:13    

Ca c'est le certificat du serveur ainsi que sa clé privée.
Il faut que tu regénères un certificat pour ton client. (Filezilla doit aussi avoir une option pour créer un certificat je suppose, mais je connais mal ce client)
 
Tout a l'heure tu parlais de Puttygen, qui est encore du SSH, il y a pas de rapport encore.

Reply

Marsh Posté le 15-03-2012 à 13:23:06    

Ok ok! Bon je vais lire quelque tuto sur Openssl je crois ça m'évitera de poser 50 000 questions car je n'ai pas tout bien compris apparemment.
Mais concrètement est-ce que le certificat pour mon client FTP peut être généré depuis le serveur FTP avec openssl ?

Reply

Marsh Posté le 15-03-2012 à 13:24:05    

Quoi que en fait j'ai pas l'impression que le client filezilla gère les certificats clients en FTPS. Donc non tu ne dois pas pouvoir utiliser filezilla pour te connecter en FTPS avec utilisation des certificats clients.

Reply

Marsh Posté le 15-03-2012 à 13:24:05   

Reply

Marsh Posté le 15-03-2012 à 13:24:58    

Oui le certificat pour ton client peut être généré depuis le serveur ftp avec openssl (seulement si ton serveur ftp est aussi la CA, chose qui est bof recommandée qd même)

Reply

Marsh Posté le 15-03-2012 à 13:27:37    

Et tu connais la commande a faire avec openssl ? Car je suis un peu perdu entre les genrsa gendsa... :/

Reply

Marsh Posté le 15-03-2012 à 13:54:26    

Là de tête non, faut créer une clé, créer une demande de certificat avec la clé, faire signer le certificat par la CA.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed