Mi síntoma es que no puedo usar un proxy con solicitudes HTTPS con LWP. Esto parece ser un problema común, y las sugerencias en Google e incluso here sugieren una solución alternativa para establecer la variable de entorno HTTPS_PROXY
para su uso por Crypt :: SSLeay.¿Cómo obligo a LWP a usar Crypt :: SSLeay para las solicitudes HTTPS?
Mi problema específico parece ser que LWP :: Protocol :: https está cargando IO :: Socket :: SSL en lugar de Crypt :: SSLeay. ¿Cómo puedo forzar el uso de Crypt :: SSLeay en su lugar?
Mi código:
#!/usr/bin/perl
use strict;
use warnings;
$ENV{HTTPS_PROXY} = 'http://10.0.3.1:3128';
use LWP::UserAgent;
my $ua = LWP::UserAgent->new();
my $req = HTTP::Request->new('GET','https://www.meritrustcu.org/');
my $res = $ua->request($req);
print "$_\n" for grep { $_ =~ /SSL/ } keys %INC;
Y es la salida, lo que demuestra que Crypt :: SSLeay no se está utilizando:
Net/SSLeay.pm
IO/Socket/SSL.pm
/usr/lib/perl5/auto/Net/SSLeay/autosplit.ix
/usr/lib/perl5/auto/Net/SSLeay/set_proxy.al
/usr/lib/perl5/auto/Net/SSLeay/randomize.al
Simplemente añadiendo una explícita use Crypt::SSLeay
a mi guión ha demostrado ser ineficaz. Carga el módulo, pero continúa cargando IO :: Socket :: SSL y lo usa para las solicitudes HTTPS.
Perfecto, gracias! Al hacerlo, se reveló la razón probable por la que LWP se establece de manera predeterminada en IO :: Socket :: SSL, tal como lo mencionó en su [propia pregunta] (http://stackoverflow.com/questions/74358/how-can-i-get- lwp-to-validate-ssl-server-certificates): 'Net :: SSL de Crypt-SSLeay no puede verificar nombres de host; instale IO :: Socket :: SSL o desactive la verificación estableciendo la variable de entorno PERL_LWP_SSL_VERIFY_HOSTNAME en 0' – Flimzy
LWP 6 cambió su política de validación de nombres de host. Si puede, use algo que no sea Crypt :: SSLeay, que no tiene un desarrollador dedicado (aunque Sinan lo ha estado ayudando a compilar). –
@briandfoy: Si puedo averiguar cómo usar IO :: Socket :: SSL (u otra opción, ¿hay otras opciones?) Con un proxy, lo haré. – Flimzy