2014-12-29 202 views
2

我在尝试将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试过吗?

在这一点上,我没有选择尝试,所以我希望有人遇到过这个问题,可以提供援助。

+0

请指出您正在使用的库的哪些版本,即perl -MLWP :: UserAgent -e'警告LWP :: UserAgent-> VERSION''和LWP :: Protocol :: https和IO相同: :插座:: SSL。同时检查访问是否使用普通浏览器获得成功,或者是否对无效证书抱怨。 –

+0

哇!我认为你在钉上击中它!我的LWP :: UserAgent和IO :: Socket :: SSL是最新版本,但LWP :: Protocol :: https库甚至没有安装。 虽然试图安装它,但我挂断了http-nb.t 1/14 你以前遇到过这个吗? –

+1

如果将LWP :: UserAgent安装为最新版本,则不会在未安装LWP :: Protocol :: https的情况下执行任何HTTPS请求,因此您不应该得到有关证书验证问题的此SSL相关错误消息。不,我没有得到测试中的错误,但请注意Perl 5.8.8。是一个旧的,完全不受支持的版本(甚至不是5.8.x系列的最后一个版本),并且可能会有一些问题没有人修复。 –

回答

0

这只是一个错字,用 “verify_hostname” 不带 “s”:

我的$ UA = LWP :: UserAgent->新(ssl_opts => {verify_hostname => 0});

+0

感谢您的支持,这实际上是我输入StackOverflow时发生的错误,而不是原始代码。 –

相关问题