500 OOPS: SSL: не может загрузить закрытый ключ RSA vsftpd

Я настраиваю vsfptd на debian 7.3, я пытаюсь использовать ssl. Я генерирую certficates, использующий эту команду:

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

Я проверил, что полномочия хорошо настроены, я не знаю, что сделать для фиксации этого. Какая-либо справка?

5
задан 27 February 2016 в 16:02
3 ответа

У меня сегодня была аналогичная проблема на 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,}

Вы можете обнаружить, что первая и последняя строки заметно отличаются (например, BEGIN RSA PRIVATE KEY может измениться на что-то вроде BEGIN RSA KEY или подобное).

Другие похожие вещи для проверки (для других частей программного обеспечения)

  • Есть ли у вас собственные окончания строк в вашем файле закрытого ключа?
  • Возможно, вам нужно удалить завершающую новую строку?

Еще одна распространенная ошибка (возможно, вполне применима к вам) заключается в том, что vsftpd может измениться пользователь после запуска; некоторые программы будут читать ключ после этого (например, mysql), в то время как другие будут читать его раньше (например, httpd). Strace может быть здесь очень информативным, если вы хотите по-настоящему вникнуть.

2
ответ дан 3 December 2019 в 01:44

Кажется, я нашел корень проблемы

Я запустил 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

Правильное имя файла для сертификата (rsa_cert_file) в вашем vsftpd.conf

500 OOPS: SSL: не удается загрузить закрытый ключ RSA

Также проверьте путь и имя к вашему секретному ключу

PS вы всегда можете отладить vsftpd с помощью утилиты strace

# strace /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
2
ответ дан 3 December 2019 в 01:44

В моем случае я изменил команду следующим образом:

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd.pem -out /etc/vsftpd.pem

TO :

openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout /etc/vsftpd.key -out /etc/vsftpd.pem

Я понял: https:// askubuntu.com/questions/412070/vsftpd-will-not-start-with-ssl-enabled

Тогда сработало!!!

0
ответ дан 3 July 2020 в 13:38

Теги

Похожие вопросы