【发布时间】:2014-07-29 11:27:41
【问题描述】:
以下脚本可以在运行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 系统上。
【问题讨论】:
-
@oalders,这解释了为什么旧主机正在工作。谢谢。我已根据此信息更新了问题。但是,我明确关闭了主机名检查,但问题仍然存在。
标签: perl http lwp-useragent