Configure vsftpd with SSL

    版本為 06:16, 27 Nov 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    設定 vsftpd 使用 SSL 加密連線

    準備 CA 憑證檔

    方式一:使用自我簽署(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 主機產生兩個檔案

    1. mydomain.key 伺服器金鑰檔
    2. mydomain.csr 憑證簽署請求檔
    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
    

    TIP:

    檔案權限設定主要是考慮系統安全性,與服務是否正常運作無關。

    設定 vsftpd

    需要的檔案:

    1. mydomain.key 伺服器金鑰檔
    2. 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
    

    F.A.Q

    Q: Error: 500 OOPS: SSL: cannot load RSA private key

    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:
                        ...

    Powered by MindTouch Core