Como evitar o erro de verificação do certificado lftp?


46

Estou tentando fazer meu blog Pelican funcionar. Ele usa o lftp para transferir o blog real para o servidor, mas sempre recebo um erro:

mirror: Fatal error: Certificate verification: subjectAltName does not match ‘blogname.com’

Acho que o lftp está verificando o SSL e a configuração rápida do Pelican esqueceu de incluir que não tenho SSL no meu FTP.


Este é o código no Makefile da Pelican:

ftp_upload: $(OUTPUTDIR)/index.html
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"

que processa no terminal como:

    lftp ftp://username@blogname.com -e "mirror -R /Volumes/HD/Users/me/Test/output /myblog_directory ; quit"

O que eu gerenciei até agora é negar a verificação SSL alterando o Makefile para:

lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "set ftp:ssl-allow no" "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"

Devido à minha implementação incorreta, entrei corretamente ( lftp username@myblog.com:~>), mas o recurso de uma linha não funciona mais e preciso inserir o comando mirror manualmente:

mirror -R /Volumes/HD/Users/me/Test/output/ /myblog_directory

Isso funciona sem erro e tempo limite. A questão é como fazer isso com um forro.


Além disso, tentei:

  • set ssl:verify-certificate/ftp.myblog.com no
  • Este truque para desativar a verificação de certificado no lftp:

    $ cat ~ / .lftp / rc define ssl: verifique o certificado não

No entanto, parece que não há pasta "rc" no diretório lftp - portanto, esse prompt não tem chance de funcionar.


1
~/.lftprc é um arquivo
Mausy5043 27/02

Respostas:


42

Na página de manual :

-c command
Executa os comandos fornecidos e sai. Os comandos podem ser separados por ponto e vírgula ( ;), AND ( &&) ou OR ( ||). Lembre-se de citar o argumento de comandos corretamente no shell. Esta opção deve ser usada sozinha, sem outros argumentos.

Portanto, você deseja especificar os comandos como um único argumento, separados por ponto e vírgula:

lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "set ftp:ssl-allow no; mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"

Você pode realmente omitir o quitcomando e usar em -cvez de -e.


Isso é ótimo. Muito obrigado. Eu esperava que alguém mais experiente que eu identificasse minha falha instantaneamente (- eu também tentei sua sugestão -c deixando de fora a desistência, mas isso não funcionou para mim. Estou feliz de qualquer maneira).
patrick

34

Eu tive um problema semelhante, embora meu lftp tenha suporte a ssl compilado no (Fedora RPM). ssl:verify-certificate falsefez o truque para mim.


11
Com base nisso, colocar o set ssl:verify-certificate falsemeu ~/.lftprcresolveu o problema para mim.
Nicolas Raoul

5
… Embora isso anule o ponto de usar SSL, seu lftp agora aceita com alegria qualquer certificado que seja apresentado, tornando-o vulnerável a ataques M2M.
espectros

1
Se os certificados não forem validados corretamente, uma causa provável é que o lftp não encontra os certificados de CA do seu sistema. Veja esta resposta para uma correção.
ingomueller.net

19

echo "set ssl:verify-certificate no" >> ~/.lftp/rc

resolverá o problema se você não quiser que o certificado seja verificado


2
Isso ainda desabilita a verificação de certificados SSL e possibilita ataques man-in-the-middle. Para uma solução melhor, consulte esta resposta .
ingomueller.net

3
é melhor apenas executar set ssl:verify-certificate nono shell lftp para desativar temporariamente a sessão atual do que desativar sempre. Ainda +1 para a solução.
akostadinov 04/07

8

ssl:verfy-certificate false não funcionou para mim, estava recebendo um erro de tempo limite ao "estabelecer conexão de dados".

Eu segui essas instruções adicionando set ftp:ssl-allow falseao meu ~/.lftprcarquivo.


3
Você soletrou certo quando executou o comando? ssl: verificar certificado falso
Malcolm Murdoch

5

Além disso, tentei:

  • definir ssl: verifique o certificado / ftp.myblog.com no
  • Este truque para desativar a verificação de certificado no lftp:

$ cat ~ / .lftp / rc define ssl: verifique o certificado não

Tente usar set ftp:ssl-allow no; funcionou como um encanto para mim.


1
Essa é a escolha mais apropriada. A configuração global é uma má escolha, pois é razoável usar a verificação do certificado quando possível e, ao definir a opção global, ele nunca tentará verificar o certificado. Você pode usar um arquivo de script lftp -f <script>e colocar este comando antes do comando open.
Kmcguire

set ssl:verify-certificate noé melhor eu acho, porque a transação permanece segura. set ftp:ssl-allow nocomunicará texto simples
michalzuber

4

Eu também estava enfrentando um tipo semelhante de erro de verificação de certificado SSL. Definir o certificado de verificação como 'não' funcionou para mim.

Exemplo:

lftp -c 'set ftps: prot-inicial ""; definir ftp: ssl-force true; definir ftp: ssl-protect-data true; definir ssl: verificar certificado não; open -u Nome de usuário, Senha 208.82.204.46; coloque uploadfilename; '


3

Eu li páginas de manual e encontrei a solução. Criar arquivo

~/.lftp/rc

e adicione a próxima linha:

set ssl:check-hostname false;

1

Precisa do comando lftp: set ftp:ssl-allow no;

Você pode executar o comando logo após selecionar:

lftp www.yourdomain.com -u username,password -e "set ftp:ssl-allow no;"

ou salve o comando em ~/.lftprc.


0
lftp -u username,password host -e "set ftp:ssl-allow no" 

corrigiu o problema para mim

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.