Zakładam, że masz już zainstalowany vsftpd na swoim serwerze.
Aby włączyć szyfrowanie połączenia SSL/TLS musimy wygenerować najpierw samopodpisany (self-signed) certyfikat X.509 w formacie PEM (plik zawierający CSR i KEY).
openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout vsftpd.pem -out vsftpd.pem
Jeśli chcesz wykonać powyższe polecenie w systemie Windows, możesz zainstalować Win32 OpenSSL:
https://slproweb.com/products/Win32OpenSSL.html
Podajemy dane o jakie nas prosi program, w większości są to dane opcjonalne, ale niektóre lepiej nadpisać, niż stosować domyślne wartości jak np. Default Company Ltd. (zależnie od programu) – nie wygląda to ładnie.
W polu Common Name podajemy adres naszego serwewa: host, FQDN lub IP.
Opis poszczególnych parametrów:
- -req
PKCS#10 X.509 Certificate Signing Request (CSR) Management. - -nodes
If this option is specified then if a private key is created it will not be encrypted. - -days n
When the -x509 option is being used this specifies the number of days to certify the certificate for, otherwise it is ignored. n should be a positive integer. The default is 30 days. - -newkey arg
This option creates a new certificate request and a new private key. - -keyout filename
This gives the filename to write the newly created private key to. If this option is not specified then the filename present in the configuration file is used. - -out filename
This specifies the output filename to write to or standard output by default.
Pozostało już tylko zmodyfikowanie pliku konfiguracyjnego naszego serwera FTP.
# Konfiguracja SSL/TLS rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO require_ssl_reuse=NO ssl_ciphers=HIGH # Koniec konfiguracji SSL/TLS
Restartujemy serwer:
service vsftpd restart
Po zrestartowaniu serwera FTP pierwsze logowanie przez FileZilla na nasz serwer powinno wyglądać mniej więcej tak:
Jest zawarta informacja o nieznanym certyfikacie, który musimy zaakceptować.
Zaznaczamy checkbox „Zawsze ufaj certyfikatowi w kolejnych sesjach” i to wszystko.
Została opisana najprostsza konfiguracja. Klucz prywatny nie jest zabezpieczony hasłem, ale nie wykorzystuję go także nigdzie indziej.
Jeśli masz klucz prywatny, którym podpisujesz różne certyfikaty, możesz go jak najbardziej użyć.
Odpowiada za to parametr:
- -key filename
This specifies the file to read the private key from. It also accepts PKCS#8 format private keys for PEM format files.
Więcej o dostępnych parametrach znajdziesz na stronie OpenSSL:
https://www.openssl.org/docs/manmaster/man1/openssl-req.html