Estou tentando fazer meu blog Pelican funcionar. Ele usa 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 do Pelican:
ftp_upload: $(OUTPUTDIR)/index.html
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"
que renderiza no terminal como:
lftp ftp://[email protected] -e "mirror -R /Volumes/HD/Users/me/Test/output /myblog_directory ; quit"
O que consegui até agora foi 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, eu faço o login corretamente ( lftp [email protected]:~>
), mas o recurso de uma linha não funciona mais e eu tenho que digitar 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 desabilitar a verificação de certificado em lftp:
$ cat ~/.lftp/rc set ssl:verify-certificate no
No entanto, parece que não há pasta "rc" no meu diretório lftp - portanto, esse prompt não tem chance de funcionar.
Da página de manual :
Então você quer especificar os comandos como um único argumento, separados por ponto e vírgula:
Você pode realmente omitir o
quit
comando e usar-c
em vez de-e
.Eu tive um problema semelhante, embora meu lftp tenha suporte a ssl compilado em (Fedora RPM).
ssl:verify-certificate false
fez o truque para mim.sem verificação de certificado
echo "set ssl:verify-certificate no" >> ~/.lftp/rc
resolverá o problema se você não quiser que o certificado seja verificado
A solução segura com certificado é
O que funcionou para mim passo a passo com lftp:
openssl s_client -connect <ftp_hostname>:21 -starttls ftp
, no início do resultado recebi algo como-----BEGIN CERTIFICATE----- MIIEQzCCAyu.....XjMO -----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- MIIEQzCCAyu.....XjMO -----END CERTIFICATE-----
em/etc/ssl/certs/ca-certificates.crt
/etc/lftp.conf
para todo o sistemaset ssl:ca-file "/etc/ssl/certs/ca-certificates.crt"
lftp
, no meu caso élftp -u "${FTP_USER},${FTP_PWD}" ${FTP_HOST} -e "set net:timeout 10;mirror ${EXCLUDES} -R ${LOCAL_SOURCE_PATH} ${REMOTE_DEST_PATH} ; quit"
ssl:verfy-certificate false
não funcionou para mim, eu estava recebendo um erro de tempo limite ao "fazer conexão de dados".Eu segui essas instruções adicionando
set ftp:ssl-allow false
ao meu~/.lftprc
arquivo.Eu também estava enfrentando um tipo semelhante de erro de verificação de certificado SSL. Definir check-certificate como 'não' funcionou para mim.
Exemplo:
lftp -c 'set ftps:initial-prot ""; definir ftp:ssl-force true; definir ftp:ssl-protect-data true; set ssl:verify-certificate no; open -u Nome de usuário,Senha 208.82.204.46; coloque uploadfilename;'
Tente usar
set ftp:ssl-allow no
; funcionou como um encanto para mim.Eu li as páginas do manual e encontrei a solução. Criar arquivo
e adicione a próxima linha:
Precisa do comando lftp:
set ftp:ssl-allow no;
Você pode executar o comando logo após selecionar:
ou salve o comando em
~/.lftprc
.resolveu o problema para mim
Resolvido usando isso:
exemplo: