1.安装vsftpd
使用yum 安装vsftpd
[root@vps] yum install vsftpd
或者采用rpm安装
[root@vps] rpm -Uvh http://centos.mirror.vpslink.com/centos-4/4.3/os/i386/CentOS/RPMS/vsftpd-2.0.1-5.EL4.3.i386.rpm
我们来确认一下安装的vsftpd是否支持ssl加密
[root@vps] ldd /usr/sbin/vsftpd | grep libssl
libssl.so.4 => /lib/libssl.so.4 (0x4001e000)
如果能看到类似上边的输出,则说明此vsftpd编译的时候加入了libssl支持。否则,你需要重新安装支持ssl的vsftpd或者自己编译vsftpd,加入 ssl支持。
如果自己从源码编译vsftpd,则需要修改源码中的builddefs.h文件使vsftpd支持SSL
# vi builddefs.h
原始设置为:
#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL
修改为:
#define VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#define VSF_BUILD_SSL
2.利用OpenSSL生成证书
[root@vps] openssl req -x509 -nodes -days 365 -newkey rsa:1024 \
-keyout /etc/vsftpd/vsftpd.pem \
-out /etc/vsftpd/vsftpd.pem
其中"-days 365"声明证书的有效期是一年。
接下来的过程需要你输入一些相关的国家,地区,位置,组织名称,common name等信息。
回答这些信息以后系统会将生成完的证书vsftpd.pem文件保存在/etc/vsftpd目录下。
3.修改/etc/vsftpd/vsftpd.conf文件
增加下面这些内容,这些参数是与ssl有关的。
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/vsftpd.pem
如果设置force_local_logins_ssl=YES,那么会强制用户登录时采用支持TLS/SSL认证的ftp客户端。如果设置为NO的话,则用户可以选择使用ssl加密或者不加密。
4.重新启动vsftpd服务
[root@vps] /etc/rc.d/init.d/vsftpd restart
flashfxp等ftp客户端设置ssl选项,如下图:
附记:我们公司出口有个ISA2006做NAT,刚装好vsftpd的时候总是不能upload,检查了各种权限设置都正常,无奈一google发现原来是Mircosoft ISA搞得鬼。解决方法很简单,右键单击相应的rule,然后选择"Configure FTP",将"Read Only"前面的钩去掉,然后点OK,然后Apply即可。
另外ISA 2006不支持FTPS协议,要解决这个问题请参考这片文档: