簡體   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