Frage

Ich möchte wissen, ob es möglich ist LWP :: Useragent zu zwingen, ein abgelaufenes SSL-Zertifikat für einen einzelnen, bekannten Server zu akzeptieren. Das Problem wird durch die Squid-Proxy etwas kompliziert dazwischen.

Ich ging so weit, eine Debugging-Umgebung wie einzurichten:

use warnings;
use strict;
use Carp;
use LWP::UserAgent;
use LWP::Debug qw(+);
use HTTP::Cookies;

my $proxy = 'http://proxy.example.net:8118';
my $cookie_jar = HTTP::Cookies->new( file => 'cookies.tmp' );
my $agent = LWP::UserAgent->new;
$agent->proxy( [ 'http' ], $proxy );
$agent->cookie_jar( $cookie_jar );

$ENV{HTTPS_PROXY} = $proxy;
$ENV{HTTPS_DEBUG} = 1;
$ENV{HTTPS_VERSION} = 3;
$ENV{HTTPS_CA_DIR}    = '/etc/ssl/certs';
$ENV{HTTPS_CA_FILE}    = '/etc/ssl/certs/ca-certificates.crt';

$agent->get( 'https://www.example.com/');

exit;

Zum Glück das Problem schließlich auf dem Remote-Server festgelegt wurde, bevor ich in der Lage war, mit meiner eigenen Lösung zu kommen, aber ich möchte das Problem gegebenenfalls in der Lage umgehen sollte es wieder entstehen (der zugrunde liegende Dienst seit mehreren gestört Stunden, bevor ich in der Tat genannt).

Ich würde eine Lösung auf der LWP :: Useragent-Ebene über einen Gefallen auf der Basis der zugrunde liegenden Crypt :: SSLeay oder openSSL Implementierungen, wenn eine solche Lösung existiert, da ich es vorziehen, nicht die Sicherheit für andere, nicht verwandte Anwendungen zu entspannen. Natürlich bin immer noch ich selbst für eine solche Lösung suchen, in meinem reichlich freie Zeit.

War es hilfreich?

Lösung

Aktualisiert Kommentar Adresse

So umgehen Sie alle Zertifikatsprüfungen Sie können die Agent bis das Zertifikat nicht überprüfen.

$agent->ssl_opts(verify_hostname => 0);

Der Agent wird auch Einstellungen bis auf die SSL-Socket-Implementierung übergeben verwendet werden. Zum Beispiel mit IO::Socket::SSL Sie können SSL_verify_mode auf 0x00 gesetzt.

$agent->ssl_opts(SSL_verify_mode => 0x00);

Andere Tipps

Versuchen Sie, die SSL-Zertifikat-Validierung überschrieben mit

$agent->ssl_opts(verify_hostname => 0,
              SSL_verify_mode => 0x00);

, bevor Sie tun, um die HTTPS-Anfrage.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top