perl Client-SSL-Warning: Peer certificate not verified

Ich habe ein Problem mit einem perl-screenscraper zu einer HTTPS-Website.
Beim Debuggen lief ich die folgenden:

print $res->headers_as_string;

und in der Ausgabe, ich habe die folgende Zeile:

Client-SSL-Warning: Peer certificate not verified

Gibt es eine Möglichkeit, ich kann auto-akzeptieren Sie dieses Zertifikat, oder ist das nicht das problem?

#!/usr/bin/perl 
use LWP::UserAgent; 
use Crypt::SSLeay::CTX; 
use Crypt::SSLeay::Conn; 
use Crypt::SSLeay::X509; 
use LWP::Simple qw(get);

my $ua  = LWP::UserAgent->new; 
my $req = HTTP::Request->new(GET => 'https://vzw-cat.sun4.lightsurf.net/vzwcampaignadmin/');
my $res = $ua->request($req);

print $res->headers_as_string;

Ausgabe:

Cache-Control: no-cache
Connection: close
Date: Tue, 01 Jun 2010 19:28:08 GMT
Pragma: No-cache
Server: Apache
Content-Type: text/html
Expires: Wed, 31 Dec 1969 16:00:00 PST
Client-Date: Tue, 01 Jun 2010 19:28:09 GMT
Client-Peer: 64.152.68.114:443
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /O=VeriSign Trust Network/OU=VeriSign, Inc./OU=VeriSign International Server CA - Class 3/OU=www.verisign.com/CPS Incorp.by Ref. LIABILITY LTD.(c)97 VeriSign
Client-SSL-Cert-Subject: /C=US/ST=Massachusetts/L=Boston/O=verizon wireless/OU=TERMS OF USE AT WWW.VERISIGN.COM/RPA (C)00/CN=PSMSADMIN.VZW.COM
Client-SSL-Cipher: DHE-RSA-AES256-SHA
Client-SSL-Warning: Peer certificate not verified
Client-Transfer-Encoding: chunked
Link: <css/vtext_style.css>; rel="stylesheet"; type="text/css"
Set-Cookie: JSESSIONID=DE6C99EA2F3DD1D4DF31456B94F16C90.vz3; Path=/vzwcampaignadmin; Secure
Title: Verizon Wireless - Campaign Administrator

UPDATE:
Ich fügte hinzu,

$ENV{HTTPS_CA_FILE}   = 'certs/PSMSADMIN.VZW.COM';
$ENV{HTTPS_CA_DIR}    = 'certs/';

wie unten vorgeschlagen. Ich habe auch eingeschaltet debugging:

$ENV{HTTPS_DEBUG} = 1;

Hier ist meine Ausgabe:

SSL_connect:before/connect initialization
SSL_connect:SSLv3 write client hello A
SSL_connect:SSLv3 read server hello A
SSL3 alert write:fatal:bad certificate
SSL_connect:error in SSLv3 read server certificate B
SSL_connect:before/connect initialization
SSL_connect:SSLv2 write client hello A
SSL_connect:error in SSLv2 read server hello B
content: 500 SSL negotiation failed: error:1407E086:SSL routines:SSL2_SET_CERTIFICATE:certificate verify failed

Ich versuche zu ignorieren, die Fehler, aber das problem ist, das ist das einzige, was auf der Seite jetzt, also kein login-Formular oder nichts.

Können Sie Ihre Ausgabe? Ich bekomme ein 200 OK, und was ich davon ausgehen ist das richtige Dokument. Ja, der header hat eine Warnung, aber können Sie klären, wie diese nachteilig wirkt sich auf das Verhalten des Programms?
das problem ist, dass ich nicht angemeldet. Nach dem Absenden der Anmeldeinformationen, geht es zurück auf die login-Seite.
Möchten Sie vielleicht, um kick up die HTTP-debug-level ein bisschen. Ich bin mir nicht sicher, ob dies ein SSL-problem. Können Sie die Ausgabe der status-code und Körper zu? Offensichtlich habe ich nicht über die Anmeldeinformationen, um dies zu testen 😀
Gut, muss ich sagen, dass ich eingeloggt werden, aber nur nach dem ausführen der oben genannten Skript getrennt von meinem Bildschirm Schaber. Es ist merkwürdig, es funktioniert für ein paar Tage und dann nicht wieder anmelden. Ich habe versucht herauszufinden, was an diesem Skript ist, wodurch es zu arbeiten. Ein weiterer interessanter Leckerbissen ist, warum wird es so Aussehen, dass das cert abgelaufen ist? Expires: Wed, 31 Dec 1969 16:00:00 PST
Ok, ich glaube, ich habe gerade herausgefunden, warum das passiert war. Ich hatte Nutzung von IO::Socket::SSL; in einem anderen pm das script Aufrufe und ich glaube, das war eine Entführung alle SSL-Kommunikation. Nach dem entfernen dieser, meine ich, das gewünschte Ergebnis zu erhalten jedes mal. Ich glaube, ich habe das Problem gelöst, aber ich warte ein paar Tage, um sicher zu sein. 🙂

InformationsquelleAutor Jeremey | 2010-06-01

Schreibe einen Kommentar