2013-04-08 26 views
8

Tôi đang cố gắng tạo kết nối máy khách đến một trang nội bộ ssl không có chứng chỉ và cần bỏ qua proxy.Chọn SSL_VERIFY_NONE cho SSL_verify_mode

tôi có thể bỏ qua proxy, và tôi có thể kết nối với trang web và tạo ra một kết nối khách hàng, tuy nhiên, tôi đang nhận cảnh báo xấu xí này:

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

tại C:/strawberry/perl/site/lib/LWP/Protocol/http.pm line 31

Mã của tôi:

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

Có điều gì trong cảnh báo mà bạn không hiểu không? – TLP

+0

Không rõ tiêu đề bài đăng của bạn phải làm gì với phần còn lại của câu hỏi của bạn. Có lẽ bạn có thể giải thích những gì bạn nghĩ rằng kết nối là? – mob

Trả lời

13

nhắn Đó là từ IO :: Ổ cắm :: SSL, và nó đề cập đến hằng số SSL_VERIFY_NONE nó xuất thay vì chuỗi 'SSL_VERIFY_NONE'.

Thứ hai, ssl_opts là đối số của hàm tạo LWP :: UserAgent, không phải RPC :: XML :: Khách hàng.

Hãy thử:

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

Cảm ơn, điều đó đã loại bỏ cảnh báo khi tạo kết nối Khách hàng., –

+0

Bây giờ tôi đã tạo $ client, tôi cần chuyển yêu cầu. chẳng hạn như [my $ session = $ client-> simple_request ('đăng nhập', 1, 0, $ username, $ password); ] Tôi lại một lần nữa nhận được lỗi cho tuyên bố này. Làm thế nào tôi sẽ đi về việc chuyển ssl_opts cho mỗi yêu cầu tiếp theo? –

+0

hum, nó sử dụng đối tượng UserAgent được tạo ra trong hàm tạo và các cờ đó được truyền như người ta mong đợi. Không chắc nơi thư đó đến từ – ikegami

2

Phiên bản mới Tôi tin rằng bạn nên đặt là 0 hoặc 1. Tôi nghĩ rằng đây là một lỗi:

500 SSL_verify_mode must be a number and not a string 

Từ:

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

Để :

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