LWP :: UserAgent忽略SSL_VERIFY_PEER

问题描述 投票:0回答:1

我在RHEL 7上使用Perl 5.16.3,并且我有一个相当通用的请求:

#!/usr/bin/env perl
use strict;
use warnings;

use LWP::UserAgent() ;
use URI::Escape ;
use IO::Socket::SSL ;

my $PhoneNo = "<Some phone number>" ;
my $SomeMsg = "Some message" ;
my $BaseURL = 'https://api.clickatell.com/http/sendmsg?user=someuser&password=somepassword' ;
my $EncSomeMsg = uri_escape($SomeMsg) ;

my $SendURL = sprintf("%s&to=%s&text=%s",$BaseURL,$PhoneNo,$EncSomeMsg) ;

my $ua = LWP::UserAgent->new(
timeout => 10,
ssl_opts => {
    verify_hostname => 1,
    SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_PEER,
},
) ;

#$ua->ssl_opts(SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_PEER) ; # Causes error 'Can't locate object method "ssl_opts" via package "LWP::UserAgent"'

my $contents = $ua->get($SendURL) ;

printf("Returned: %s\n",$contents) ;

但是仍然返回:

不建议使用客户端的SSL_VERIFY_NONE的SSL_verify_mode的默认值!请通过SSL_ca_file | SSL_ca_path将SSL_verify_mode设置为SSL_VERIFY_PEER进行验证。如果您真的不想验证证书并保持连接不受中间人攻击,请在您的应用程序中将SSL_verify_mode显式设置为SSL_VERIFY_NONE。

这些是模块的版本:

  • LWP::UserAgent: 2.033
  • LWP::Protocol::https:(没有返回版本)
  • IO::Socket::SSL: 1.94

为什么忽略我的验证对等方的请求?

perl https
1个回答
0
投票

根据LWP::UserAgent change-log ssl_opts已在版本6.00中添加。您使用较旧/较低的版本2.*

LWP::UserAgent change-log

6.00 2011-03-08-[…] LWP :: UserAgent获得了新的ssl_opts方法来控制这个也是。

© www.soinside.com 2019 - 2024. All rights reserved.