Ssl

將帶有客戶端證書的 FTPS 捲曲到 vsftpd

  • February 20, 2016

我想通過使用者名+密碼或客戶端證書對 FTP 客戶端進行身份驗證。只允許 FTPS。

使用者/密碼有效,但是在使用 curl (我沒有其他選項)和客戶端證書進行測試時,我需要傳遞一個使用者。僅通過提供證書在技術上是否可以進行身份驗證?

vsftpd.conf

passwd_chroot_enable=YES
chroot_local_user=YES
ssl_enable=YES
rsa_cert_file=usrlocal/ssl/certs/vsftpd.pem
force_local_data_ssl=YES
force_local_logins_ssl=YES

curl -v -k -E client-crt.pem --ftp-ssl-reqd ftp://server:21/testfile輸出測試是:

* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Request CERT (13):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS handshake, CERT verify (15):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using DES-CBC3-SHA
* Server certificate:
*        SSL certificate verify result: self signed certificate (18), continuing anyway.
> USER anonymous
< 530 Anonymous sessions may not use encryption.
* Access denied: 530
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):
curl: (67) Access denied: 530

這在理論上是可以的,因為我禁止匿名訪問。如果我指定一個使用者,-u username:pass它可以工作,但它也沒有證書。

客戶端證書似乎沒問題,它看起來像這樣:

客戶端-crt.pem

-----BEGIN RSA PRIVATE KEY-----
content
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
content
-----END CERTIFICATE-----

我錯過了什麼?提前致謝。(作業系統是 Solaris 10 SPARC)。

您需要的是:強制性證書驗證。相關的 vsftpd 指令是 validate_cert,預設為 NO。

添加以下選項:

require_cert=YES

validate_cert=YES

ca_certs_file=/somewhere/cacerts.pem

不要使用自簽名證書,因為伺服器使用該 ca_certs_file 中的 ca 證書之一檢查證書。

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