ProFTPD:TLS配置中“TLS驗證客戶端”和“NoCertRequest”的含義
我知道預設的 FTP 是不安全的,因為它沒有加密。為了避免 FTP 的這種不安全行為,我想在我的 ProFTPD 中設置 TLS 加密。根據此處的本教程:https : //www.howtoforge.com/tutorial/install-proftpd-with-tls-on-ubuntu-16-04/ ProFTPD 中的 tls 配置應如下所示:
<IfModule mod_tls.c> TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol TLSv1.2 TLSCipherSuite AES128+EECDH:AES128+EDH TLSOptions NoCertRequest AllowClientRenegotiations TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem TLSVerifyClient off TLSRequired on RequireValidShell no </IfModule>
很多這些指令是不言自明的,但我仍然不知道指令“TLSVerifyClient”是什麼意思。
根據 ProFTPD 手冊:
如果關閉,模組將接受證書並建立 SSL/TLS 會話,但不會驗證證書。
如果打開,該模組將驗證客戶端的證書,此外,除非客戶端在伺服器請求證書時提供證書,否則所有 SSL 握手嘗試都將失敗。
但是我認為證書來自伺服器本身,那麼為什麼伺服器要接受來自客戶端的證書請求呢?
還有我的第二個問題,TLSoption 指令的“nocertrequest”選項是什麼意思?
根據 ProFTPD 手冊,該選項的作用是:
一些 FTP 客戶端在處理伺服器的證書請求時會出現錯誤。此選項會導致伺服器在 SSL 握手期間不包含此類請求
同樣的問題,當伺服器本身俱有 TLS 證書時,為什麼伺服器會向客戶端發送證書請求。
該
TLSVerifyClient
指令是關於驗證客戶端(即“客戶端身份驗證”或“相互身份驗證”);它用於確定是否mod_tls
會向客戶端請求證書,以及客戶端提供的證書是否必須有效(TLSVerifyClient on
)或無效(TLSVerifyClient optional
)。一些站點希望使用客戶端提供的證書進行訪問控制;例如,僅允許客戶端提供來自伺服器信任的 CA 的證書。的原始實現將始終包括對客戶端證書的
mod_tls
請求,無論TLSVerifyClient
設置如何。因此有 “NoCertRequest”TLSOption
,用於禁用該客戶端證書請求。然而現在,NoCertRequestTLSOption
已被棄用,只支持使用該TLSVerifyClient
設置;見錯誤#4213。希望這可以幫助!