下列命令档会在执行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
和之前的主机名是不验证的。这解释了为什么它在旧主机上工作。但是,我明确地禁用了检查,它仍然坚持做这些检查。
这是一个巴布亚系统。
2条答案
按热度按时间uqzxnwby1#
您已关闭验证主机名;您尚未关闭验证证书。
verify_hostname
控制是否“LWP将为安全协议方案确保它连接到具有与预期主机名 * 匹配的有效证书 * 的服务器”(我强调的是)。将其设置为0允许您连接到具有有效证书但不是为您试图访问的主机/主机名颁发的服务器。若要关闭检查证书是否有效(由受信任的CA颁发),您需要:
请注意,如果您要传输任何敏感信息或希望信任返回的数据,则关闭这两个选项中的任何一个都不是好主意。关闭这两个选项中的任何一个都将失去SSL的好处,并且容易受到各种中间人攻击。
kq4fsx7k2#
我们在后端机器上安装了cloudflare证书,并且无法使用Perl脚本激活URL端点,直到我们将SSL_ca_file选项添加到ssl_opts: