www.RiffZone.net
code.RiffZone.net
login.RiffZone.net
Retour au Sommaire

Prendre en charge FTPS (SSL) sur PureFTPd

Depuis quelque temps, les clients FTP commencent à s'émouvoir de ce qu'on ne gère pas les connexions FTP sécurisées sur un serveur, voyons donc comment ajouter une couche SSL à PureFTPd, dont on a vu l'installation dans un précédent article. CHAPTER:Certificat auto-signé:CHAPTER Dans ce premier cas, on ne dispose pas d'un vrai certificat, validé par une autirité de certification, et on veut se contenter d'un certificat auto-signé. On va le générer sous /etc/ssl/private/pure-ftpd.pem, donc on vérifie d'abord que le répertoire existe bien: CMD: mkdir -p /etc/ssl/private/ :CMD Puis on génère le certificat, le fichier cible va contenir la clé privée puis le certificat: CMD: openssl req -x509 -nodes -newkey rsa:2048 -sha256 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem :CMD On obtient dans le pem un contenu de ce type: CODE: -----BEGIN PRIVATE KEY----- MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDb/ZzOHJ82I3ZN OHdCCerct9nFtOd2YYv7jMW7r2kE1CAkcxdmdDcD1Na5saadViHHs9UXl7jqOP07 TnOgwZc/H2I8P2OTy8q0flJiQFzKq+kaObHHhtO/Nmu/aN5wchgESbG+mwSyN+HP .... eSqfUIS/XQuiPKsprk0P+nbYSrQMrcJy6f7qfP/8/MNT7i96dW/cYFw4N/ByLGY7 Q28gzmVdLucHo3aK8oqQaBXVA5+cCKnHU9bQrqoGVl4co0hcpZPtZOcx9DV1+0r2 9+NZHnXcQjTFOHZr/ifD6g== -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIID+TCCAuGgAwIBAgIUMEf1HvJs9+EXAQexFYsfKjcDnaIwDQYJKoZIhvcNAQEL BQAwgYsxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIDAZGcmFuY2UxDjAMBgNVBAcMBVBh cmlzMRAwDgYDVQQKDAdIZXJvaWtzMQswCQYDVQQLDAJJVDEaMBgGA1UEAwwRdnBz .... x8sc+TtiRXprNLEXmKHsVDtezIo7GcbIte1y96y5LDqJn69aC1avy7e1+fx0R4zx D1V6UXvbACTMIM9vExLEI+BN/NOjAHAqUoXH+bh7+Y9FKTJLXKctysgxP9xWZe1c b6uPhLeUVWiD7gDLcA== -----END CERTIFICATE----- :CODE On ajuste les droits du fichier: CMD: chmod 600 /etc/ssl/private/pure-ftpd.pem :CMD Puis on configure FTPd de manière à ce qu'il accepte aussi bien les connexions SSL que non cryptées: CMD: echo 1 > /etc/pure-ftpd/conf/TLS :CMD Pour que cette nouvelle configuration soit prise en compte, on redémarre FTPd: CMD: /etc/init.d/pure-ftpd-mysql restart :CMD C'est fini ! CHAPTER:Un vrai certificat:CHAPTER Puisque l'on a déjà notre clé privée, le certificat et les autorités de certification, il suffit de concaténer dans /etc/ssl/private/pure-ftpd.pem: Clé privée + Certificat + CAs Puis comme dans le cas précédent: CMD: chmod 600 /etc/ssl/private/pure-ftpd.pem echo 1 > /etc/pure-ftpd/conf/TLS /etc/init.d/pure-ftpd-mysql restart :CMD Et voilà ! CHAPTER:Et avec LetsEncrypt ?:CHAPTER On suppose ici que vous utilisez certbot pour Apache, que vous avez un domaine pour lequel vous avez configuré LetsEncrypt, donc le certificat existe, se renouvelle automatiquement etc. Pour utiliser ce certificat Apache pour PureFTPd, il va falloir concaténer la clé privée puis la fullchain LetsEncrypt dans le fichier "/etc/ssl/private/pure-ftpd.pem" avec les autorisations à 600. Pour le reste, ce sera comme dans les sections précédentes: CMD: echo 1 > /etc/pure-ftpd/conf/TLS /etc/init.d/pure-ftpd-mysql restart :CMD En pratique, listez d'abord vos certificats installés: CMD: certbot certificates :CMD Vous obtenez pour chaque certificat un descriptif du style: CODE: Certificate Name: riffzone.net Domains: riffzone.net Expiry Date: 2020-04-08 00:04:21+00:00 (VALID: 49 days) Certificate Path: /etc/letsencrypt/live/riffzone.net/fullchain.pem Private Key Path: /etc/letsencrypt/live/riffzone.net/privkey.pem :CODE Dans le crontab, après le "certbot renew", on n'a plus qu'à lancer le script suivant, en utilisant bien sûr vos propres chemins de pem LetsEncrypt: CODE: cat /etc/letsencrypt/live/riffzone.net/privkey.pem > /etc/ssl/private/pure-ftpd.pem cat /etc/letsencrypt/live/riffzone.net/fullchain.pem >> /etc/ssl/private/pure-ftpd.pem chmod 600 /etc/ssl/private/pure-ftpd.pem /etc/init.d/pure-ftpd-mysql restart :CODE