2014-10-10 75 views
0

我的应用程序需要SSL下的LWP,但我似乎无法在没有收到错误的情况下正确连接。Perl LWP SSL连接:证书验证失败

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 C:/Perl/site/lib/LWP/Protocol/http.pm line 51.

每当我在Firefox中加载了该网站在我的服务器,我收到

This connection is untrusted (Technical error: sec_error_unknown_issuer)

每当我加载它在浏览器,它验证绝对没问题。

我可以在我的电脑上将FireFox和Chrome加载到页面中,并且根本没有收到SSL验证错误。

我不知道我的电脑和我的服务器有什么不同,他们都使用完全相同的FireFox版本,所以我不确定为什么它不能在那里正确验证。

我已经尝试了将$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0放入Perl脚本中的解决方法,但它似乎仍然引发相同的确切错误。

This is the script I'm using to test HTTPS

有谁知道任何解决这个或任何解决方法吗?

+0

可能相关:http://stackoverflow.com/questions/19389336/installing-a-new-ca-certificate-换的perl-5-14-2-LWP-上的Ubuntu-12-04,http://stackoverflow.com/questions/6384217/failed-connect-or-certificate-verify-failed-on-lwp-https-得到 – 2014-10-10 21:28:39

回答

2

我已经在$ ENV {} PERL_LWP_SSL_VERIFY_HOSTNAME = 0

将作为选项意味着其只关心禁用对证书的主机名的检查的名称试图解决方法。它不会禁用证书链的验证。

每当我加载了Firefox中的网站在我的服务器上,我收到...

既然你用Firefox和LWP,但无法与Chrome验证错误,Chrome已经大概一个额外的CA作为他们其他人没有的信任。

从您的代码看来,您使用的是Windows,从我的理解来看,Firefox自带CA存储,LWP使用Mozilla :: CA(其中包含通常随Firefox附带的CA),但Chrome使用系统CA存储。因此,系统存储中可能存在Firefox和LWP不知道的CA。

尽管可能有一些特殊的深奥CA被默认的Windows CA商店知道,但不是Firefox,但它更可能是在某个SSL检测防火墙的后面,并且管理员添加了必要的代理证书到Windows CA商店,但不是Firefox或LWP的商店。我建议你在Chrome浏览器中检查证书链并查看顶部(内置)证书。

如果您认为受信任的CA可以将其导出并导入到Firefox。您还可以通过将LWP保存为PEM格式使LWP使用此CA,然后将PERL_LWP_SSL_CA_PATH环境变量设置为指向保存的文件,或使用ssl_opts设置中的SSL_ca_path选项使LWP使用此CA证书进行验证。

如果这种解释不会导致一个解决方案请提供您尝试访问目标URL和您在网络设置更多的细节,特别是如果有一个拦截SSL代理服务器或防火墙。也请提供有关LWP的版本,您正在使用的信息,因为有很大的变化与第6版

相关问题