Pregunta

Me gustaría saber si es posible forzar a LWP :: UserAgent a aceptar un certificado SSL caducado para un único servidor conocido. El problema es un poco complicado por el proxy Squid en el medio.

Fui tan lejos como para configurar un entorno de depuración como:

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;

Afortunadamente, el problema finalmente se solucionó en el servidor remoto antes de que se me ocurriera mi propia solución, pero me gustaría poder eludir el problema si surgiera nuevamente (el servicio subyacente se había interrumpido por varios horas antes de que me llamaran a la acción).

Preferiría una solución en el nivel LWP :: UserAgent sobre una basada en las implementaciones subyacentes de Crypt :: SSLeay o openSSL, si existe tal solución, ya que prefiero no relajar la seguridad para otras aplicaciones no relacionadas. Por supuesto, todavía estoy buscando esa solución, en mi abundante tiempo libre.

¿Fue útil?

Solución

Actualizado al comentario de dirección

Para omitir todas las comprobaciones de certificados, puede configurar agente para no verificar el certificado.

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

El agente también pasará la configuración a la implementación del socket SSL que se esté utilizando. Por ejemplo, con IO :: Socket :: SSL puede establecer SSL_verify_mode en 0x00 .

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

Otros consejos

Intente anular la validación del certificado SSL con

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

antes de hacer la solicitud https.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top