我正在Debian7.3上配置vsfptd,我正在尝试使用ssl。我使用以下命令生成using值:
openssl req -x509 -nodes -days 1925 -newkey rsa:2048 -keyout /etc/vsftpd/private/vsftpd2.key -out /etc/vsftpd/certificado/vsfptd3.pem
我的vsftpd.conf是:
listen=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
#anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=NO
#chown_uploads=YES
#chown_username=whoever
#
chroot_local_user=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=ftp-ssl
rsa_cert_file=/etc/vsftpd/certificado/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/private/vsftpd2.key
anon_root=/srv/ftp/anonimo
chown_upload_mode=757
anon_upload_enable=YES
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
listen_port=990
ssl_ciphers=HIGH
require_ssl_reuse=NO
但是,每次我尝试启动vsftpd时,都会收到以下错误消息:
500 OOPS: SSL:无法加载RSA私钥
我已经检查了权限是否配置良好,我不知道该做什么来修复这个问题。有什么帮助吗?
发布于 2015-05-11 12:31:27
今天,我在一个NetScaler (基于BSD的网络设备上,它的openssl版本比我创建的密钥更早)上遇到了类似的问题,尽管vsftpd没有问题,而且我可以说mysql也受到了它的影响。
您的私钥格式可能与预期的格式不同。尝试以下几点:
mv /etc/vsftpd/private/vsftpd2.key{,.old}
openssl rsa -in /etc/vsftpd/private/vsftpd2.key.old -out /etc/vsftpd/private/vsftpd2.key
diff /etc/vsftpd/private/vsftpd2.key{.old,}
你可能会发现第一行和最后一行明显不同。开始RSA私钥可能会更改为类似于BEGIN密钥或类似的东西)。
其他类似的检查(其他软件)
另一个常见的错误(可能适用于您)是,vsftpd在启动后可能会更改用户;一些软件会在此之后读取密钥(例如。),而其他人会在此之前阅读(例如。( httpd)如果您想深入了解,Strace在这里可以提供非常丰富的信息。
发布于 2016-02-27 19:41:35
看来我找到了这个问题的根源。
我已经用你的配置运行了strace
stat("/etc/vsftpd/vsftpd.conf", {st_mode=S_IFREG|0600, st_size=791, ...}) = 0
getuid() = 0
getuid() = 0
open("/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 3
fstat(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 9), ...}) = 0
poll([{fd=3, events=POLLIN}], 1, 10) = 1 ([{fd=3, revents=POLLIN}])
read(3, "\225\f\312\271\276\215\201=\200\237A\337u7\237\201\2001GC\352\371\363\334GT\36/\37\f\33\257"..., 48) = 48
close(3) = 0
getuid() = 0
open("/etc/vsftpd/certificado/vsftpd.pem", O_RDONLY) = -1 ENOENT (No such file or directory)
fcntl(0, F_GETFL) = 0x8402 (flags O_RDWR|O_APPEND|O_LARGEFILE)
fcntl(0, F_SETFL, O_RDWR|O_APPEND|O_NONBLOCK|O_LARGEFILE) = 0
write(0, "500 OOPS: ", 10500 OOPS: ) = 10
write(0, "SSL: cannot load RSA certificate", 32SSL: cannot load RSA certificate) = 32
write(0, "\r\n", 2
) = 2
exit_group(1) = ?
+++ exited with 1 +++
如您所见,vsftpd找不到ssl证书- /etc/vsftpd/certificado/vsftpd.pem。
open("/etc/vsftpd/certificado/vsftpd.pem", O_RDONLY) = -1 ENOENT (No such file or directory)
这是因为在生成证书时,您使用了不同的名称
-out /etc/vsftpd/certificado/vsfptd3.pem
更正vsftpd.conf中证书的文件名(vsftpd.conf)
500 OOPS: SSL:无法加载RSA私钥
还可以检查私钥的路径和名称。
您可以使用strace实用程序来调试vsftpd。
# strace /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
发布于 2020-07-03 13:38:23
不幸的是,错误消息在某种程度上是通用的,可能有几个不同的根源。
在某些系统(例如,RHEL8.8)中,密钥的长度应该不是1024
,而是至少2048
。在我的例子中,我更改了命令如下:
openssl req -x509 -nodes -days 365 -newkey rsa:1024 \
-keyout /etc/vsftpd.pem -out /etc/vsftpd.pem
对此:
openssl req -x509 -nodes -days 720 -newkey rsa:2048 \
-keyout /etc/vsftpd.key -out /etc/vsftpd.pem
我在Ask Ubuntu网站上找到了这个技巧:https://askubuntu.com/questions/412070/vsftpd-will-not-start-with-ssl-enabled
这对我有用。
https://serverfault.com/questions/581059
复制相似问题