将带客户端证书的FTPScurl到vsftpd

我想通过用户名+密码或客户端证书来validationFTP客户端。 只有FTPS是允许的。

用户/密码的作品,但在curltesting(我没有另一种select)和客户端证书,我需要传递一个用户。 通过提供证书进行身份validation不是技术上的可行吗?

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/testfiletestingcurl -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)。

你需要的是:强制性的证书validation。 相关的vsftpd指令是validate_cert,默认是NO。

添加以下选项:

require_cert = YES
validate_cert = YES
ca_certs_file = /某处/ cacerts.pem

不要使用自签名证书,因为服务器使用ca_certs_file中的ca证书之一来检查证书。