vsFTPd 使用 Let’s Encrypt 憑證建置 TLS 加密傳輸

從 Let’s Encrypt 取得的網站憑證,其實可以拿來在 Mail 和 FTP 站使用

vsFTPd 要啟用 TLS 加密傳輸,要先製作或取得Domain憑證,既然先前已經從 Let’s Encrypt 取得憑證,那就直接拿來用即可。

已經有憑證了,要記得憑證的位置:

接下來就修改設定檔,IPv4 的設定檔在 /etc/vsftpd/vsftpd.conf,而 IPv6 的設定檔是在 /etc/vsftpd/vsftpd_v6.conf,在 IPv4 和 IPv6 Dual Stack 的環境下,記得兩個檔案都要改到,設定檔的內容都一樣。

基本設定:
ssl_enable=YES    #啟用加密連線(預設是使用 ssl_tlsv1=YES,所以不用特別指定就會啟用 TLS 了)
ssl_ciphers=HIGH    #指定加密演算法,HIGH 使用高於 128bits 加密方式
rsa_cert_file=/etc/letsencrypt/live/自已的Domain名稱/fullchain.pem    #憑證位置
rsa_private_key_file=/etc/letsencrypt/live/自已的Domain名稱/privkey.pem    #私鑰位置

加入以上四行就夠了,其他的都用預設值也就可以了,至於其他的設定,可參考說明檔

設定完成,重啟 vsFTPd:
#service vsftpd restart

連線一下,確定憑證有正確指向,在客戶端也有顯示出來:

但是

還是會出現「這個伺服器的憑證不明」

還是要自己勾選「總是信任未來連線的憑證」

那和自己簽發憑證有何不同~~~~~~ XD

不過總是可以用就是了~~~~~~

啟用之後,所有連線預設都是必須加密的,如果有必要使用一些沒有辦法設定加密連線的 FTP Client,就要關閉強制加密的設定(預設值是開啟強制加密,所以想關閉再設定即可)。到 /etc/vsftpd/vsftpd.conf 及 /etc/vsftpd/vsftpd_v6.conf 修改設定:

force_local_data_ssl=NO    (登入不強制加密)
force_local_logins_ssl=NO    (資料不強制加密,都已經無法加密了,這條也要一起改)

修改後重啟 vsftpd 即可,就算 client 沒有使用加密連線也可登入了。