2013-04-08 23 views
8

Próbuję utworzyć połączenie klienta z wewnętrzną witryną ssl, która nie ma certyfikatu i musi ominąć proxy.Wybór SSL_VERIFY_NONE dla SSL_verify_mode

jestem w stanie ominąć proxy, a ja jestem w stanie połączyć się z witryną i utworzyć połączenie klienta, jednak jestem coraz to brzydkie ostrzeżenie:

******************************************************************* 
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. 
******************************************************************* 

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

mój kod:

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

Czy jest coś w tym ostrzeżeniu, którego nie rozumiesz? – TLP

+0

Nie jest jasne, jaki tytuł ma Twój wpis w związku z resztą pytania. Być może mógłbyś wyjaśnić, co myślisz, że połączenie jest? – mob

Odpowiedz

13

to jest wiadomość z IO :: Socket :: SSL i odnosi się do stałej SSL_VERIFY_NONE eksportuje raczej niż ciąg 'SSL_VERIFY_NONE'.

Po drugie, ssl_opts jest argumentem konstruktora LWP :: UserAgent, a nie RPC :: XML :: Client.

Spróbuj:

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

Dzięki, że wyeliminowałeś ostrzeżenie podczas tworzenia połączenia z klientem., –

+0

Teraz, gdy utworzyłem klienta $, muszę przekazać żądania. takie jak [my $ session = $ client-> simple_request ("login", 1, 0, $ username, $ password); ] Ponownie dostaję błąd dla tego stwierdzenia. W jaki sposób chciałbym przekazać ssl_opts do każdego kolejnego żądania? –

+0

hum, używa obiektu UserAgent utworzonego w konstruktorze i do którego te flagi zostały przekazane tak, jak można by oczekiwać. Nie wiesz, skąd ta wiadomość pochodzi z – ikegami

2

Nowa wersja wierzę należy ustawić na 0 lub 1. myślę, że to był błąd:

500 SSL_verify_mode must be a number and not a string 

Od:

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

Aby :

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