Comment puis-je la force de LWP à utiliser Crypt::SSLeay pour les requêtes HTTPS?
Mon problème est que je ne peut pas utiliser un proxy avec les requêtes HTTPS avec LWP. Cela semble être un problème commun, et les conseils de Google et même ici proposent un travail autour pour le réglage de la HTTPS_PROXY
variable d'environnement pour l'utilisation par Crypt::SSLeay.
Mon problème semble être que LWP::Protocole::https est en cours de chargement IO::Socket::SSL plutôt que Crypt::SSLeay. Comment puis-je la force de la Crypte::SSLeay de l'utiliser à la place?
Mon code:
#!/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;
Et elle est sortie, montrant que la Crypte::SSLeay n'est pas utilisé:
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
Le simple ajout d'un explicite use Crypt::SSLeay
à mon script s'est avéré inefficace. Il charge le module, mais il continue à charger IO::Socket::SSL, et de les utiliser pour les requêtes HTTPS.
OriginalL'auteur Flimzy | 2011-11-06
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Je n'ai pas de procuration approprié, donc je n'ai pas essayé moi-même.
Net::SSL from Crypt-SSLeay can't verify hostnames; either install IO::Socket::SSL or turn off verification by setting the PERL_LWP_SSL_VERIFY_HOSTNAME environment variable to 0
LWP 6 changé c'est de la politique sur la validation des noms d'hôte. Si vous le pouvez, utiliser autre chose que de la Crypte::SSLeay, qui n'a pas un développeur dédié (bien que Sinan a été de l'aider à compiler).
Si je peux comprendre comment l'utiliser IO::Socket::SSL (ou une autre option--il d'autres options?) avec un proxy, je vais le faire.
ainsi, dans le code de réglage
$ENV{HTTPS_PROXY} = 'http://10.0.3.1:3128';
ce n'est pas unsecured
proxy. Il devrait être$ENV{HTTPS_PROXY} = 'https://10.0.3.1:3128';
?????? n'est-ce pas?eh bien cela dépend si votre proxy écoute via le protocole https. Je viens de copier le paramètre de proxy à partir de la question.
OriginalL'auteur cjm
C'est ce que j'ai fait pour passer de LWP et SOAP::Lite fonctionne avec notre proxy au sein de GE. C'était après beaucoup de creuser sur le CPAN, google etc. J'ai enfin compris après l'exécution du script de test dans la Crypte::SSLeay paquet appelé net_ssl_test et il a été en mesure de se connecter à travers le proxy. La clé est de forcer Crypt::SSLeay utilisation de Net::SSL comme il a été mentionné ci-dessus. Ce n'est pas très bien documenté sur le CPAN.
OriginalL'auteur Rich Wellman