Estoy portando una aplicación de PHP/cURL a Perl y LWP :: UserAgent. Necesito hacer una solicitud POST a un servidor web y proporcionar un certificado de cliente y un archivo de clave. El código PHP que estoy tratando de reproducir es la siguiente:Uso de LWP con SSL y certificados de cliente
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSLCERT, "/path/to/certificate.pem");
curl_setopt($ch, CURLOPT_SSLKEY, "/path/to/private.key");
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, "secretpassword");
Y aquí está mi código Perl:
my $ua = LWP::UserAgent->new();
$ua->ssl_opts(
SSL_verify_mode => 0,
SSL_cert_file => '/path/to/certificate.pem',
SSL_key_file => "/path/to/private.key",
SSL_passwd_cb => sub { return "secretpassword"; }
);
el código PHP se conecta correctamente al servidor pero el código Perl falla con:
Error de error de lectura de SSL: 14094410: rutinas SSL: SSL3_READ_BYTES: falla de protocolo de alerta de sslv3
No me puedo dar cuenta de lo que me estoy perdiendo.
¿Es el 'private.key' (PHP) y' private.pem' (Perl) un error o parte del porting? – amon
Pasar varios argumentos a [ssl_opts] (https://metacpan.org/module/LWP::UserAgent#ATTRIBUTES) no está documentado. Para estar seguro, llame a ssl_opts varias veces o páselos al constructor. Creo que funciona, pero es más seguro. También podría [informarlo como una función error/faltante] (https://rt.cpan.org/Public/Bug/Report.html?Queue=libwww-perl). – Schwern
Eso fue solo un error cuando oculté mi código. Debería ser private.key para ambos. Gracias por notarlo pero ese no es el problema. ¡Aún necesitas ayuda! :) – kent