Security

ProFTPD:TLS配置中“TLS驗證客戶端”和“NoCertRequest”的含義

  • April 8, 2017

我知道預設的 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

希望這可以幫助!

引用自:https://serverfault.com/questions/833521