設定 vsftpd 使用 SSL 加密連線
方式一:使用自我簽署(Self-Signed)
mkdir /etc/vsftpd/cert openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/cert/mydomain.key -out /etc/vsftpd/cert/mydomain.crt
方式二:使用第三方機構簽署 TWNCA
使用 Linux 主機產生兩個檔案
openssl genrsa -out /etc/vsftpd/cert/mydomain.key 2048 openssl req -new -key /etc/vsftpd/cert/mydomain.key -out /etc/vsftpd/cert/mydomain.csr
將上述檔案 mydomain.csr 上傳至 TWCA 官網,並完成申請簽署的程序。一旦官方完成憑證簽署,會以 Email 方式通知,並可以下載簽署後的憑證檔
TWCA 簽署後的憑證檔包含下述檔案
- root.crt 根憑證檔
- server.crt 伺服器憑證檔
- uca_1.crt 中繼憑證#1檔
- uca_2.crt 中繼憑證#2檔
上述檔案在這篇教學只會用到 server.crt
cp server.crt /etc/vsftpd/cert/mydomain.crt chown root:root /etc/vsftpd/cert/mydomain.crt chmod 0600 /etc/vsftpd/cert/mydomain.crt
需要的檔案:
編輯 /etc/vsftpd/vsftpd.conf
加上這幾行
# SSL Configuration rsa_private_key_file=/etc/vsftpd/cert/mydomain.key rsa_cert_file=/etc/vsftpd/cert/mydomain.crt 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 ssl_ciphers=HIGH
TIP:
force_local_data_ssl=YES
force_local_logins_ssl=YES
如果設定 NO,client 可使用加密與不加密連線,YES 強制使用加密連線。ssl_sslv2=NO
ssl_sslv3=NO
因為 ssl 協定不太安全,建議只保留 TLS。
重啟 vsftpd
service vsftpd restart
Ans:已經確定憑證檔與金鑰檔路徑正確,但始終無法正常啟動服務,有可能這兩個檔案其中一個不是當初所配對的,確認方式,使用下述指令分別列出檔案的內容,其中 Modulus 的內容兩者必須相同。
openssl x509 -noout -text -in /etc/vsftpd/cert/mydomain.crt openssl rsa -noout -text -in /etc/vsftpd/cert/mydomain.key
檢查字串是否相符
Modulus (2048 bit):
00:d8:c9:f1:a5:4e:11:62:7d:f4:03:fd:22:fd:71:
26:a3:48:8c:bb:0e:d5:69:ae:9c:2e:f0:89:7a:ea:
97:05:44:07:7d:c8:08:0a:83:3b:72:7d:1a:f3:d7:
...