ich die folgende Störung zu erhalten versuchen, auf eine bestimmte https Website verbinden LWP mit:Installieren eines neuen CA-Zertifikat für Perl 5.14.2 LWP auf Ubuntu 12.04
LWP::Protocol::https::Socket: SSL connect attempt failed with unknown errorerror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at /usr/local/share/perl/5.14.2/LWP/Protocol/http.pm line 51.
ich mit wget versucht und bekam:
Ich googelte herum und entdeckte, dass ich wahrscheinlich das godaddy root ca cert installieren musste. Ich habe herausgefunden, wie das geht (Zertifikate herunterladen,/usr/share/ca-certificates eingeben und update-ca-certificates ausführen). Ich habe auch gelernt, wie man openssl s_client in diesem Prozess benutzt.
Nun, da das Zertifikat installiert ist, wget funktioniert, aber LWP immer noch nicht mit dem gleichen Fehler und so auch OpenSSL s_client:
# openssl s_client -connect [domain]:443
CONNECTED(00000003)
depth=0 O = [domain], OU = Domain Control Validated, CN = [domain]
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 O = [domain], OU = Domain Control Validated, CN = [domain]
verify error:num=27:certificate not trusted
verify return:1
depth=0 O = [domain], OU = Domain Control Validated, CN = [domain]
verify error:num=21:unable to verify the first certificate
verify return:1
Ich habe keine Ahnung, wohin geht diese Funktion zu erhalten. Irgendwelche Vorschläge?
EDIT:GELÖST Hier ist ein einfaches Skript, das, was nach dem MikeW Vorschlag beschreibt gearbeitet:
#!/usr/bin/perl
use LWP::UserAgent;
$URL="[domain]";
my $ua = LWP::UserAgent->new(ssl_opts => { SSL_ca_path=>'/etc/ssl/certs'});
my $response = $ua->get($URL);
das funktionierte, wenn ich nur die SSL_ca_path hinzugefügt. Vielen Dank! –
Gut zu hören! Bearbeitete Antwort um klarzustellen, dass nur eine von SSL_ca_file oder SSL_ca_path benötigt wird. – mikew