Como usar o upload de cURL para FTPS para SecureTransport (dica: SITE AUTH e certificados de cliente)

1

Estou tentando conectar-me ao SecureTransport 4.5.1 via FTPS usando o curl compilado com gnutls.

Você precisa usar --ftp-alternative-to-user "SITE AUTH" por link

Você vê algo de errado com meus certificados de cliente?

Eu tento com

# mycert.crt
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----


# mykey.pem
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----

E diz "530 Nenhum certificado de cliente apresentado":

myuser@myserver ~ $ curl -v --ftp-ssl --cert mycert.crt  --key mykey.pem  --ftp-alternative-to-user "SITE AUTH" -T helloworld.txt ftp://ftp.example.com:9876/upload/
* About to connect() to ftp.example.com port 9876 (#0)
*   Trying 1.2.3.4... connected
* Connected to ftp.example.com (1.2.3.4) port 9876 (#0)
< 220 msn1 FTP server (SecureTransport 4.5.1) ready.
> AUTH SSL
< 334 SSLv23/TLSv1
* found 142 certificates in /etc/ssl/certs/ca-certificates.crt
> USER anonymous
< 331 Password required for anonymous.
> PASS [email protected]
< 530 Login incorrect.
> SITE AUTH
< 530 No client certificate presented.
* Access denied: 530
* Closing connection #0

curl: (67) Access denied: 530

Eu também tentei com uma versão pk8 ...

# openssl pkcs8 -in mykey.pem -topk8 -nocrypt > mykey.pk8
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

... mas obteve exatamente o mesmo resultado.

Qual é o truque para enviar um certificado de cliente para o SecureTransport?

    
por Seamus Abshere 02.11.2011 / 03:56

1 resposta

1

O truque: Não use o GnuTLS. Verifique se o seu cURL está compilado com o OpenSSL, por exemplo

$ curl --version
curl 7.19.4 (i686-pc-linux-gnu) libcurl/7.19.4 OpenSSL/0.9.8k zlib/1.2.3
Protocols: tftp ftp telnet dict http file https ftps 
Features: IPv6 Largefile NTLM SSL libz 

Eu previamente recompilei o cURL para usar o GnuTLS, mas de acordo com a lista de discussão GnuTLS não é muito bem suportado .

Desde que eu estava no Gentoo, recebi o padrão cURL de volta com

sudo USE="-gnutls" emerge curl

Finalmente, aqui está o comando que funciona para mim:

curl  --user NameInClientCert:anonymous --ftp-ssl --ftp-ssl-reqd --ftp-pasv --disable-epsv --key mykey.pem --cert mycert.crt -T helloworld.txt ftp://ftp.example.com:9876/upload/

(Palavra para o sábio: use ftp: // no URL, não em ftps: //)

    
por 09.11.2011 / 22:32