500 OOPS: SSL: não é possível carregar a chave privada RSA vsftpd

5

Estou configurando o vsfptd no debian 7.3, estou tentando usar ssl. Eu gero as certficates usando este comando:

openssl req -x509 -nodes -days 1925 -newkey rsa:2048 -keyout /etc/vsftpd/private/vsftpd2.key -out /etc/vsftpd/certificado/vsfptd3.pem

E meu vsftpd.conf é este:

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

Mas toda vez que tento iniciar o vsftpd, recebo esta mensagem de erro:

500 OOPS: SSL: cannot load RSA private key

Eu verifiquei se as permissões estão bem configuradas, não sei o que fazer para corrigir isso. Qualquer ajuda, por favor?

    
por user2568422 10.03.2014 / 17:00

2 respostas

1

Eu tive um problema semelhante hoje em dia em um NetScaler (dispositivo de rede baseado em BSD com uma versão mais antiga do openssl do que eu criei a chave), embora não com vsftpd, e posso dizer que o mysql também sofre com isso. p>

Seu formato de chave privada talvez esteja em um formato diferente do esperado. Tente o seguinte:

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,}

Você pode achar que as primeiras e últimas linhas são notavelmente diferentes (por exemplo, o BEGIN RSA PRIVATE KEY pode mudar para algo como BEGIN RSA KEY ou similar).

Outras coisas semelhantes para verificar (para outros softwares)

  • Você tem finais de linha nativos em seu arquivo de chave privada?
  • Você talvez precise remover a nova linha final?

Outra falha comum (bastante aplicável a você talvez) é que o vsftpd pode alterar o usuário após o início; algum software lerá a chave depois disso (por exemplo, mysql), enquanto outros a lerão antes (por exemplo, httpd). Strace pode ser muito informativo aqui se você quiser realmente investigar.

    
por 11.05.2015 / 14:31
1

Parece que encontrei a raiz do problema

Eu executei strace com sua configuração

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, "5\f21651=07A7u77101GC2134GT/\f7"..., 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 +++

Como você pode ver, o vsftpd não encontrou o certificado SSL - /etc/vsftpd/certificado/vsftpd.pem.

open("/etc/vsftpd/certificado/vsftpd.pem", O_RDONLY) = -1 ENOENT (No such file or directory)

É porque, quando o certificado foi gerado, você usou um nome diferente

-out /etc/vsftpd/certificado/vsfptd3.pem

Corrija o nome do arquivo para o certificado (rsa_cert_file) no seu vsftpd.conf

500 OOPS: SSL: cannot load RSA private key

Verifique também o caminho e o nome para sua chave privada

P.S. você sempre pode depurar o vsftpd com o utilitário strace

# strace /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
    
por 27.02.2016 / 20:41