在Ubuntu上為FTPServer(FTP over SSL)設置SSL加密,可以按照以下步驟進行:
首先,確保你的系統是最新的,并安裝vsftpd和ssl-cert包。
sudo apt update
sudo apt install vsftpd ssl-cert
編輯vsftpd的配置文件/etc/vsftpd.conf。
sudo nano /etc/vsftpd.conf
在文件中添加或修改以下配置項:
# 啟用SSL
ssl_enable=YES
# 強制使用SSL
force_local_data_ssl=YES
force_local_logins_ssl=YES
# SSL證書和密鑰文件路徑
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# 允許匿名用戶使用SSL
allow_anon_ssl=NO
# 允許本地用戶使用SSL
local_enable=YES
# 允許寫操作
write_enable=YES
# 其他常用配置項
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
保存并關閉配置文件后,重啟vsftpd服務以應用更改。
sudo systemctl restart vsftpd
你可以使用openssl命令來驗證FTPServer是否正確配置了SSL。
openssl s_client -connect your_server_ip:21 -starttls ftp
你應該會看到類似以下的輸出,表示SSL連接成功:
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify error:num=19:self signed certificate in certificate chain
verify return:1
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=0 CN = your_server_hostname
verify return:1
---
Certificate chain
0 s:CN = your_server_hostname
i:C = US, O = Let's Encrypt, CN = R3
1 s:C = US, O = Let's Encrypt, CN = R3
i:O = Digital Signature Trust Co., CN = DST Root CA X3
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIEbTJ9MzANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQGEwJV
...
-----END CERTIFICATE-----
subject=CN=your_server_hostname
issuer=C = US, O = Let's Encrypt, CN = R3
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3546 bytes and written 434 bytes
Verification error: self signed certificate in certificate chain
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 19 (self signed certificate in certificate chain)
---
確保你的防火墻允許FTP和FTPS流量。
sudo ufw allow 21/tcp
sudo ufw allow 990/tcp # FTPS數據連接端口
sudo ufw reload
在客戶端上,使用支持FTPS的FTP客戶端(如FileZilla)連接到服務器,并選擇使用SSL/TLS。
通過以上步驟,你應該能夠在Ubuntu上成功配置FTPServer以使用SSL加密。