2013-04-08 11 views
8

Ich versuche, eine Clientverbindung zu einer internen ssl-Site zu erstellen, die kein Zertifikat aufweist und den Proxy umgehen muss.Auswählen von SSL_VERIFY_NONE für SSL_verify_mode

Ich kann den Proxy umgehen, und ich bin in der Lage, die Site zu verbinden und eine Client-Verbindung erstellen, aber ich bin diese hässliche Warnung erhalten:

******************************************************************* 
Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client 
is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER 
together with SSL_ca_file|SSL_ca_path for verification. 
If you really don't want to verify the certificate and keep the 
connection open to Man-In-The-Middle attacks please set 
SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application. 
******************************************************************* 

bei C:/strawberry/perl/site/lib/LWP/Protocol/http.pm line 31

Mein Code:

use RPC::XML::Client; 
use XML::Simple; 
use LWP::Protocol::https; 

$ENV{NO_PROXY} = '10.*'; 

$ENV{'PERL_LWP_SSL_VERIFY_HOSTNAME'} = 0; 

my $server = RPC::XML::Client->new("$vneUrl/api/index.ice", 
           ssl_opts => { SSL_verify_mode => 'SSL_VERIFY_NONE', 
               verify_hostname => 0, 
               SSL_use_cert => 0x00 
               }, 
            ); 
+0

Gibt es etwas in dieser Warnung, dass Sie nicht verstehen? – TLP

+0

Es ist nicht klar, was der Titel deines Beitrags mit dem Rest deiner Frage zu tun hat. Vielleicht könnten Sie erklären, was Sie denken, die Verbindung ist? – mob

Antwort

13

Diese Botschaft ist von IO :: Socket :: SSL, und es bezieht sich auf die Konstante SSL_VERIFY_NONE es exportiert eher als die Zeichenfolge 'SSL_VERIFY_NONE'.

Zweitens ist ssl_opts ein Argument von LWP :: UserAgents Konstruktor, nicht RPC :: XML :: Client.

Versuchen:

use IO::Socket::SSL qw(SSL_VERIFY_NONE); 

RPC::XML::Client->new($uri, 
    useragent => [ 
     ssl_opts => { 
     verify_hostname => 0, 
     SSL_verify_mode => SSL_VERIFY_NONE, 
     }, 
    ], 
); 
+0

Danke, das hat die Warnung beim Erstellen der Client-Verbindung beseitigt., –

+0

Nun, da ich den $ client erstellt habe, muss ich Anforderungen übergeben. wie zB [meine $ session = $ client-> simple_request ('login', 1, 0, $ username, $ password); ] Ich bekomme wieder den Fehler für diese Aussage. Wie würde ich die ssl_opts an jede weitere Anfrage weitergeben? –

+0

hum, es verwendet das UserAgent-Objekt, das im Konstruktor erstellt wurde und an das diese Flags wie erwartet übergeben wurden. Nicht sicher, wo diese Nachricht von – ikegami

2

Neue Version, die ich von Ihnen festgelegten glauben sollte auf 0 oder 1 Ich denke, das ein Fehler war:

500 SSL_verify_mode must be a number and not a string 

Von:

$useragent->ssl_opts(SSL_verify_mode=>'SSL_VERIFY_NONE'); 

zu :

$useragent->ssl_opts(SSL_verify_mode=>'0');