加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – LWP :: UserAgent坚持验证主机名

发布时间:2020-12-15 21:48:48 所属栏目:大数据 来源:网络整理
导读:以下脚本可以在运行libwww-perl-5.836的主机上返回一个综合标头,但不会在主机上使用libwww-perl-6.30.0返回.在这种情况下,脚本显示以下内容: 500 Can't connect to backend.mutegroup.org:443 (certificate verify failed) Content-Type: text/plain Client
以下脚本可以在运行libwww-perl-5.836的主机上返回一个综合标头,但不会在主机上使用libwww-perl-6.30.0返回.在这种情况下,脚本显示以下内容:
500 Can't connect to backend.mutegroup.org:443 (certificate verify failed)
    Content-Type: text/plain
    Client-Date: Mon,28 Jul 2014 21:09:28 GMT
    Client-Warning: Internal response

    Can't connect to backend.mutegroup.org:443 (certificate verify failed)

    LWP::Protocol::https::Socket: SSL connect attempt failed with unknown error error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at /usr/lib64/perl5/vendor_perl/5.16.3/LWP/Protocol/http.pm line 51.

这是脚本:

#!/usr/bin/perl

use strict;
use warnings;

use LWP::UserAgent;
use HTTP::Request::Common;

my $ua      = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0,} );
my $url     = 'https://backend.mutegroup.org/api/getLastId';

my $request = POST $url;
print $ua->request($request)->as_string

默认情况下,libwww-perl-5.837及之前未验证主机名.这就解释了为什么它适用于旧主机.但是,我明确禁用了支票,但它仍坚持要这样做.

这是在Gentoo系统上.

解决方法

您已关闭验证主机名;你还没有关闭验证证书.

verify_hostname控制“LWP将用于安全协议方案是否确保它连接到具有与预期主机名匹配的有效证书的服务器”(我的重点).将其设置为0允许您连接到具有有效证书但未针对您尝试访问的主机/主机名颁发的服务器.

要关闭检查证书是否有效(由受信任的CA颁发),您需要:

use IO::Socket::SSL;

my $ua = LWP::UserAgent->new(
   ssl_opts => {
      verify_hostname => 0,SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE,},);

请注意,如果您要传输任何敏感信息或希望信任返回的数据,则关闭其中任何一个选项都是一个坏主意.如果关闭其中任何一个,您就会失去SSL的好处,并且容易受到各种中间人攻击.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读