PERL_LWP_SSL_VERIFY_HOSTNAME réglage à 0 ne fonctionne pas
Suis en cours d'exécution dans un problème de connexion sur une machine Ubuntu, alors que mon autre machine fonctionne très bien. La différence entre les deux est la version Ubuntu et le SSLeay version, mais je ne peux pas affiner ce qu'est la question.
J'ai déjà fait les suivantes:
a) ajouter la variable d'environnement: PERL_LWP_SSL_VERIFY_HOSTNAME avec une valeur de 0
b) ajouter le $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0; pour la VICommon.pm fichier
À la fois celles mentionnées ci-dessus ne fonctionne pas. Je ne peux pas comprendre pourquoi il ne fonctionne pas sur ma deuxième machine.
Ubuntu 12.10 (Travaux)
$perl /usr/lib/vmware-vcli/apps/general/connect.pl --url https:///sdk/webService --username --mot de passe
Connexion Réussie
De Temps du serveur : 2013-07-19T22:11:31.681181 Z
$ perl -v
C'est du perl 5, version 14, subversion 2 (v5.14.2) construit pour x86_64-linux-gnu-thread-multi
$ perl -la LMWP -e 'print "LWP Version: $LWP::VERSION\n"'
LWP Version: 6.04
$ perl -MCrypt::SSLeay -e 'print "Crypt::SSLeay Version: $Crypt::SSLeay::VERSION\n"'
Crypt::SSLeay Version: 0.58
Ubuntu 13.04 (Ne fonctionne pas)
$perl /usr/lib/vmware-vcli/apps/general/connect.pl --url https:///sdk/webService --username --mot de passe
Version du serveur indisponible "https:///sdk/vimService.wsdl' dans /usr/share/perl/5.14/VMware/VICommon.h ligne 548.
$ perl -v
C'est du perl 5, version 14, subversion 2 (v5.14.2) construit pour x86_64-linux-gnu-thread-multi
$ perl -la LMWP -e 'print "LWP Version: $LWP::VERSION\n"'
LWP Version: 6.04
$ perl -MCrypt::SSLeay -e 'print "Crypt::SSLeay Version: $Crypt::SSLeay::VERSION\n"'
Crypt::SSLeay Version: 0.64
Erreur de certificat (même dans les deux machines)
lwp-request https:///sdk/webService
Ne peut pas se connecter à :443 (certificat de vérifier échoué)
LWP::Protocole::https::Socket: SSL tentative de connexion a échoué avec l'erreur inconnue erreur:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificat de vérifier échoué à /usr/share/perl5/LWP/Protocole/http.pm de la ligne 51.
Mise à JOUR de 1
Dirait que le problème n'a rien à voir avec la version Ubuntu, mais les nouveaux paquets que j'ai quand je fais "apt-get upgrade", sur la 12.10 boîte, je ne l'ai pas fait et c'était le travail. Cependant sur la 13.04 j'ai fait toutes les mises à jour. Maintenant, depuis que je reçois plus de 80 mises à jour quand je l'ai fait, je n'ai toujours pas rétréci vers le bas à la bibliothèque qui est tout gâcher. Quand j'ai installé un nouveau 13.04 image, il fonctionne très bien.
** Mise à jour 2 **
Ressemble à la base de Ubuntu 12.10 ou 13.04, beau travail. Si vous obtenez les dernières mises à jour, puis il s'arrête de fonctionner. Si vous ne savez pas encore qui de la bibliothèque est à l'origine du problème.
Ce qui vous rend si sûr que ce soit lié à un échec de la vérification du certificat? Généralement, le Perl bibliothèques SSL émettre des avertissements lorsque le certificat de vérifications échoue, mais vous ne semblez pas être tout de ceux-ci. Pouvez-vous utiliser lwp-request pour connecter deux machines?
Je reçois le même échec du certificat dans les deux machines: lwp-request https://<accueil>/sdk/webService ne Peut pas se connecter <accueil>:443 (certificat de vérifier échoué) LWP::Protocole::https::Socket: SSL tentative de connexion a échoué avec l'erreur inconnue erreur:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificat de vérifier échoué à /usr/share/perl5/LWP/Protocole/http.pm de la ligne 51.
Notez que Crypt::SSLeay n'est pas le meilleur moyen de manipulation SSL en Perl plus. Il y a une longue conversation à ce sujet dans le bug tracker.
OriginalL'auteur user2601110 | 2013-07-19
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème je l'ai résolu en tapant "use Net::SSL;" avant la demande.
Aussi tenté de savoir ce que la bibliothèque est à l'origine du problème, car il est certainement une mise à niveau du module qui est la cause. La plupart des sites ont été d'accord, mais un certificat du site n'est pas valider.
OriginalL'auteur Gauntlet
Il peut également dépendre de la version de Net::HTTPS, et sur la possibilité ou pas de IO::Socket::SSL est installé. Net::HTTPS préfèrent IO::Socket::SSL (qui utilise le Net::SSLeay) sur le Net::SSL (qui utilise Crypt::SSL). Les versions plus récentes de Net::HTTPS ont amélioré la façon dont il fonctionne avec IO::Socket::SSL.
Faire une requête https. Eval-il si nécessaire de sorte qu'il ne meure pas. Puis
print "$_: $INC{$_}\n" for sort keys %INC;
pour voir ce que les bibliothèques suis chargé.OriginalL'auteur runrig
Vous pouvez essayer d'ajouter Mondiale ENV variable ou fixe dans la via de configuration d'Apache (si vous utilisez Apache)
ou
OriginalL'auteur dimas
Plutôt que d'utiliser
use Net::SSL;
bientôt dans votre code, vous pouvez obtenir un comportement plus prévisible avec:Et maintenant
PERL_LWP_SSL_VERIFY_HOSTNAME
à zéro fonctionnent comme prévu. Mais le changement de la sous-tendent la mise en œuvre du module ne doit pas être considérée comme une solution, mais un hack.OriginalL'auteur Michal Ingeli
Réglage de la
PERL_LWP_SSL_VERIFY_HOSTNAME
env var à 0 désactiver important contrôles de sécurité.Mise à niveau des modules pertinents pour la version la plus récente (novembre 2014) résolu le problème pour moi.
(Dans mon cas, j'ai mis à jour pour ces distributions: Crypte-SSLeay-0.72, Net-HTTP-6.07, libwww-perl-6.08 LWP-le Protocole https-6.06.)
OriginalL'auteur Tim Bunce