温馨提示×

linux ftpserver证书怎么配

小樊
46
2026-09-14 09:31:20
栏目: 智能运维

在 Linux 上配置 FTP over SSL/TLS(FTPS) 通常涉及 vsftpd(最常见),下面以 vsftpd + 自签证书 / 正式证书 为例说明。


一、安装 vsftpd

# Debian / Ubuntu
apt install vsftpd

# CentOS / Rocky / Alma
yum install vsftpd

二、生成证书(两种方式)

方式 1:使用自签证书(测试用)

openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 \
  -keyout /etc/ssl/private/vsftpd.key \
  -out /etc/ssl/certs/vsftpd.crt

方式 2:使用正式证书(推荐生产)

例如 Let’s Encrypt:

certbot certonly --standalone -d ftp.example.com

生成文件:

  • 证书:/etc/letsencrypt/live/ftp.example.com/fullchain.pem
  • 私钥:/etc/letsencrypt/live/ftp.example.com/privkey.pem

三、配置 vsftpd 使用证书

编辑配置文件:

vim /etc/vsftpd.conf

基础 SSL 配置

# 启用 SSL
ssl_enable=YES

# 证书和私钥
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key

# 强制使用 TLS(更安全)
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

# 允许匿名用户使用 SSL(可选)
allow_anon_ssl=NO

# 本地用户必须使用 SSL
force_local_data_ssl=YES
force_local_logins_ssl=YES

# 被动模式(云服务器必须)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

如果使用 Let’s Encrypt:

rsa_cert_file=/etc/letsencrypt/live/ftp.example.com/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/live/ftp.example.com/privkey.pem

四、防火墙 & SELinux

防火墙

firewall-cmd --add-service=ftp --permanent
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload

SELinux(CentOS/RHEL)

setsebool -P ftpd_full_access on

五、重启 vsftpd

systemctl restart vsftpd
systemctl enable vsftpd

六、客户端连接测试

  • 类型:FTPS(显式 TLS)
  • 端口:21
  • 工具:FileZilla / lftp / WinSCP

lftp 示例:

lftp
> set ssl:verify-certificate no
> open ftps://user@ftp.example.com

七、常见错误

问题 原因
530 Login incorrect 用户被 PAM 限制
无法列目录 被动端口未开放
证书不受信任 使用自签证书
TLS 握手失败 协议版本不匹配

如果你用的是 ProFTPD / Pure-FTPd,或者 云服务器 + Docker,可以告诉我,我可以给你对应配置。

0