Domanda

Vorrei sapere se è possibile forzare LWP :: UserAgent ad accettare un certificato SSL scaduto per un singolo server ben noto. Il problema è leggermente complicato dal proxy Squid in mezzo.

Sono arrivato al punto di impostare un ambiente di debug come:

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;

Fortunatamente alla fine il problema è stato risolto sul server remoto prima che potessi trovare la mia soluzione, ma vorrei essere in grado di aggirare facoltativamente il problema qualora dovesse ripresentarsi (il servizio sottostante era stato interrotto per diversi ore prima che venissi chiamato in azione).

Preferirei una soluzione a livello LWP :: UserAgent rispetto a una basata sulle implementazioni Crypt :: SSLeay o openSSL sottostanti, se esiste una soluzione del genere, poiché preferisco non allentare la sicurezza per altre applicazioni non correlate. Certo, sto ancora cercando una soluzione del genere, nel mio abbondante tempo libero.

È stato utile?

Soluzione

Aggiornato per rispondere al commento

Per ignorare tutti i controlli dei certificati è possibile impostare agente fino a non verificare il certificato.

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

L'agente passerà anche le impostazioni all'implementazione del socket SSL in uso. Ad esempio, con IO :: Socket :: SSL puoi impostare SSL_verify_mode su 0x00 .

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

Altri suggerimenti

Prova a sostituire la convalida del certificato SSL con

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

prima di eseguire la richiesta https.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top