为SSL_verify_mode选择SSL_VERIFY_NONE

Rod*_*win 10 perl ssl xml-rpc lwp

我正在尝试创建ssl与没有证书并需要绕过代理的内部站点的客户端连接.

我能够绕过代理,我能够连接到该网站并创建一个客户端连接,但是,我得到这个丑陋的警告:

*******************************************************************
 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.
*******************************************************************
Run Code Online (Sandbox Code Playgroud)

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

我的代码:

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
                                               },
                                   );
Run Code Online (Sandbox Code Playgroud)

ike*_*ami 18

该消息来自IO :: Socket :: SSL,它引用SSL_VERIFY_NONE它导出的常量而不是字符串'SSL_VERIFY_NONE'.

其次,ssl_opts是LWP :: UserAgent的构造函数的参数,而不是RPC :: XML :: Client的.

尝试:

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,
      },
   ],
);
Run Code Online (Sandbox Code Playgroud)

  • @mpapec - 我知道这是一个旧的评论,但我在Net :: SMTP :: SSL方面遇到了类似的困难.我发现的最佳解决方案是使用IO :: Socket :: SSL :: set_defaults,其设置将被其他Net :: SMTP :: SSL实例隐式使用. (4认同)