我在尝试将POST消息发送到网站时收到证书错误。PERL Get_Server_Certificate证书验证失败错误
我收到的错误:
LWP::Protocol::https::Socket: SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at /usr/lib/perl5/site_perl/5.8.8/LWP/Protocol/http.pm line 49
,我正在使用的代码是:
my $webpage = "";
my $ua = LWP::UserAgent->new();
$ua->agent('Mozilla');
$webpage = "https://mysite:444/myapp/app.aspx";
my $msg = 'An XML Message';
my $req = POST $webpage,
Content_Type => 'text/xml',
Content => $msg;
到目前为止,我已经尝试了一些“补丁”,我” ve在线发现:
试图通过环境变量禁用验证主机名: $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0;
尝试禁用通过ssl_opts验证主机名:
my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 },);
使用Mozilla CA和设置HTTPS_CA_FILE到/usr/lib/perl5/site_perl/5.8.8/Mozilla/CA/cacert.pem
试过吗?
在这一点上,我没有选择尝试,所以我希望有人遇到过这个问题,可以提供援助。
请指出您正在使用的库的哪些版本,即perl -MLWP :: UserAgent -e'警告LWP :: UserAgent-> VERSION''和LWP :: Protocol :: https和IO相同: :插座:: SSL。同时检查访问是否使用普通浏览器获得成功,或者是否对无效证书抱怨。 –
哇!我认为你在钉上击中它!我的LWP :: UserAgent和IO :: Socket :: SSL是最新版本,但LWP :: Protocol :: https库甚至没有安装。 虽然试图安装它,但我挂断了http-nb.t 1/14 你以前遇到过这个吗? –
如果将LWP :: UserAgent安装为最新版本,则不会在未安装LWP :: Protocol :: https的情况下执行任何HTTPS请求,因此您不应该得到有关证书验证问题的此SSL相关错误消息。不,我没有得到测试中的错误,但请注意Perl 5.8.8。是一个旧的,完全不受支持的版本(甚至不是5.8.x系列的最后一个版本),并且可能会有一些问题没有人修复。 –