isso está causando dor de cabeça há muito tempo.
Situação: Eu tenho uma máquina virtual que fica atrás de um proxy que protege a internet. O proxy parece funcionar bem.
Eu quero usar o cURL para transferir (-T) um arquivo ZIP para um FTP na internet. O servidor FTP requer FTPS, ou seja, SSL / TLS a ser usado.
Da minha máquina Windows eu posso usar o mesmo Proxy (e as mesmas credenciais de proxy) dentro do TotalCommander para estabelecer com sucesso uma sessão FTPS para o Servidor FTP que eu quero usar.
Então eu acho que o servidor FTP, bem como o Proxy Server, estão configurados para o propósito.
O que eu tentei:
Basicamente eu tento variações da seguinte linha de comando:
curl -vvv --ssl -T /path/to/my/file.zip ftp://my.ftpserver.com:21 --user USER:PASSWORD -x https://proxyuser:[email protected]:3128
Eu vejo na saída detalhada, que cURL pode autenticar contra o proxy e tenta se conectar ao servidor FTP. No entanto, continua recebendo um erro de SQUID (o proxy) que
Squid sent the following FTP command:
USER myftp user
The server responded with:
You must issue the AUTH command to change to an encrypted session before you can attempt to login.
550-This server requires encryption
Quando eu mudo o destino para usar ftps: // ao invés de ftp: // ele continua me dizendo
curl: (35) gnutls_handshake() failed: An unexpected TLS packet was received.
Quando olho para o log da sessão FTP do Totalcommander, vejo que ele é autenticado em relação ao Proxy. Em seguida, conecta-se ao servidor FTP e, em seguida, muda para o modo seguro para autenticação.
220-Welcome to Company-FTP
220 Company-FTP Server ready!
AUTH TLS
234 Changing to secure mode...
(cert stuff)
USER myftpuser
331 Username OK. Need password.
PASS **********
230 Password oK. Connected. logged in
....
O que eu poderia fazer de errado aqui?
Eu pesquisei isso um pouco e encontrei um post na lista de discussão curl que a opção "--tlsv1" deveria enviar "AUTH TLS" primeiro antes de "AUTH SSL", no entanto eu não acho que seja feito, porque mesmo se eu use o switch --tlsv1, o Squid voltará com a mesma mensagem de erro dizendo que ele enviou "USER myftpuser" e obteve o erro 550 de volta.
Existe uma maneira de forçar o cURL a enviar este "AUTH TLS" que o Totalcommander parece enviar e, em seguida, as autorizações com sucesso?
Muito obrigado aslmx