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: //)