Ubuntu 20.04 中自签名证书的 vsftpd 错误

Ubuntu 20.04 中自签名证书的 vsftpd 错误

我正在设置 FTP 服务器,需要使用自己的自签名证书作为 FTPS。当我配置 vsftpd 使用我的自签名证书时,它无法启动。

完全相同的设置在 Ubuntu 18.04 中运行无问题(两者都是 AWS EC2 实例)。在两种情况下我都使用 vsftpd 版本 3.0.3。

这就是我创建证书的方式:

mkdir certificates && cd certificates
mkdir ubxtestCA && cd ubxtestCA
CANAME=ubxtestCA
CLIENTNAME=ubxtestclient
SERVERNAME=ubxtest.ddns.net
openssl req -new -x509 -days 365 -extensions v3_ca -keyout $CANAME.key -out $CANAME.crt &&
openssl genrsa -out $CLIENTNAME.key 1024 &&
openssl req -out $CLIENTNAME.csr -key $CLIENTNAME.key -new &&
openssl x509 -req -in $CLIENTNAME.csr -CA $CANAME.crt -CAkey $CANAME.key -CAcreateserial -out $CLIENTNAME.crt -days 365 &&
openssl genrsa  -out $SERVERNAME.key 1024 &&
openssl req -out $SERVERNAME.csr -key $SERVERNAME.key -new &&
openssl x509 -req -in $SERVERNAME.csr -CA $CANAME.crt -CAkey $CANAME.key -CAcreateserial -out $SERVERNAME.crt -days 360

我的部署过程如下:

  • 部署 AWS EC2 实例
  • sudo apt 更新
  • 创建证书
  • sudo apt 安装 vsftpd
  • 编辑 /etc/vsftpd.conf 将 rsa_cert_file 和 rsa_private_key 更改为我的新证书
  • sudo systemctl 重新启动 vsftpd
  • sudo systemctl 状态 vsftpd

重新启动 vsftpd 后状态显示:

  • vsftpd.service:主进程已退出,代码=已退出,状态=2/INVALIDARGUMENT

如果我将 vsftpd snakeoil 证书复制到与我自己的证书相同的目录中,并在 vsftpd.conf 文件中指向这些证书,这也会起作用。

如果我在 Ubuntu 18.04 上遵循完全相同的流程,我不会收到任何错误,并且我的证书可以正常工作(客户端能够验证服务器身份)。

答案1

我发现了问题。

由于某种原因,VSFTPD(在 Ubuntu 20.04 上)无法使用采用 1024 位密钥的证书。将我的示例中生成的密钥更改为 2048 位后,它就可以正常工作了。

奇怪的...

更新 10/7/20:正如评论中所建议的,以下是我如何确定此问题根源的详细信息:

我将 vsftpd 附带的有效 snakeoil 证书与我的证书进行了比较。这是通过以下命令完成的:

openssl x509 -in <certificate_file> -text -noout

我每次只更改证书的一个方面以匹配 snakeoil 证书,直到 vsftpd 错误消失。我尝试将主题更改为仅包含 CN 字段(删除 C、ST、L、O、OU 和 emailAddress 字段)。我还将证书从版本 1 更改为版本 3。最后将使用的 RSA 密钥更改为 2048 位,使 vsftpd 能够成功启动。

相关内容