繁体   English   中英

使用paypal.com的Perl,LWP“证书验证失败”

[英]Perl, LWP “certificate verify failed” with paypal.com

不是100%肯定这是一个Perl问题,但似乎是。 我有一个与PayPal连接的IPN脚本来验证交易。 它工作正常,直到昨天,我安装了LWP :: Protocol :: https。 从那时起,它一直没有出现错误:

Can't connect to www.paypal.com:443 (certificate verify failed)

LWP::Protocol::https::Socket: SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at /usr/local/share/perl5/LWP/Protocol/http.pm line 47.

从bash(使用LWP)运行GET https://www.paypal.com产生相同的错误消息。 OTOH,运行GET https://www.gmail.com是成功的。 运行openssl s_client -host paypal.com -port 443返回(除其他外) Verify return code: 0 (ok) curl "https://www.paypal.com/cgi-bin/webscr?cmd=_notify-validate"成功收到PayPal的回复。 所以它似乎确实是Perl特有的。

模块版本:

LWP 6.13
LWP::Protocol::https 6.06
IO::Socket::SSL 2.015
Mozilla::CA 20141217 (note: I've tried the script both using Mozilla::CA and without it... results have been the same)

如果有其他相关模块,请告诉我。 Perl版本是5.10.1。 服务器操作系统是RHEL 6。

Mozilla :: CA 20141217(注意:我已经尝试过使用Mozilla :: CA而没有它的脚本......结果是一样的)

简而言之:我不知道“没有它”对于RHEL6意味着什么,但请再次尝试使用Mozilla :: CA 20130114或使用http://curl.haxx.se/docs/caextract链接的“旧版ca-bundle” .html

详细信息:您从www.paypal.com获得的证书链

[0] www.paypal.com
[1] Symantec Class 3 EV SSL CA - G2
[2] VeriSign Class 3 Public Primary Certification Authority - G5

链中的最后一个证书由1024证书签名

/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority

由于去年年底Mozilla删除了1024位证书,因此您不会再在当前的Mozilla :: CA中找到它们。 但浏览器不需要旧证书,因为基于证书[0]和[1]创建信任链已经因为它们使用内置证书而不是服务器发送的证书[2]。

虽然这个较新的内置证书也包含在Mozilla :: CA中,但由于OpenSSL如何验证证书存在长期存在的错误,因此它将不会被使用:它将始终尝试验证最长的链,而不是检查较短的链是否是可能。

有关此问题的详细信息,请参阅

这个问题可以通过使用OpenSSL 1.02(4个月前发布,可能还没有在RHEL中)引入的标志X509_V_FLAG_TRUSTED_FIRST解决,或者使用更新的尚未发布的OpenSSL版本来解决问题(参见https) ://rt.openssl.org/Ticket/Display.html?id = 3637&user = guest&pass = guest )。

通过使旧的1024位CA证书仍然可用,即使用较旧的Mozilla :: CA或CA捆绑包或使用通常包括这些旧CA的系统CA存储,可以解决该问题。 也可以看看:

  • 针对IO :: Socket :: SSL的当前错误报告 ,默认情况下使用X509_V_FLAG_TRUSTED_FIRST(如果可用)。 此标志设置为2.016(尚未发布)但需要一个Net :: SSLeay版本,它导出此标志(尚未发布)和OpenSSL 1.02(未包含在RHEL中)。
  • 针对LWP拉取请求,以使用系统上的默认CA而不是Mozilla :: CA. 这也可能为您解决问题。 请注意,Debian / Ubuntu包含了类似的补丁。 我不知道RHEL附带的LWP版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM