Sto eseguendo il porting di un'applicazione da PHP/cURL a Perl e LWP :: UserAgent. Devo fare una richiesta POST a un server web e fornire un certificato client e un file chiave. Il codice PHP che sto cercando di replicare è questo:Utilizzo di LWP con SSL e certificati client
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");
Ed ecco il mio codice 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"; }
);
il codice PHP si collega al server, ma il codice Perl non riesce con:
Errore di lettura SSL error: 14094410: Routine SSL: SSL3_READ_BYTES: errore di handshake di avviso sslv3
Non riesco a capire cosa mi sfugge.
È il 'private.key' (PHP) e' private.pem' (Perl) un errore di battitura o una parte del porting? – amon
Il passaggio di più argomenti a [ssl_opts] (https://metacpan.org/module/LWP::UserAgent#ATTRIBUTES) non è documentato. Per sicurezza, chiama ssl_opts più volte o passali nel costruttore. Penso che funzioni, ma sia al sicuro. Potresti anche [segnalarlo come bug/funzionalità mancante] (https://rt.cpan.org/Public/Bug/Report.html?Queue=libwww-perl). – Schwern
Quello era solo un refuso quando oscuravo il mio codice. Dovrebbe essere private.key per entrambi. Grazie per aver notato ma non è questo il problema. Ancora bisogno di aiuto! :) – kent