PayPal cURL 选项(CURLOPT_SSL_VERIFYPEER 和 CURLOPT_SSL_VERIFYHOST)问题

Posted

技术标签:

【中文标题】PayPal cURL 选项(CURLOPT_SSL_VERIFYPEER 和 CURLOPT_SSL_VERIFYHOST)问题【英文标题】:PayPal cURL options (CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST) issue 【发布时间】:2011-12-20 18:48:56 【问题描述】:

我有一段来自 PayPal 网站的代码:

// turning off the server and peer verification(TrustManager Concept).
// really paypal??? why not just include a recent cert???
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

正如你在我的评论中看到的,我想知道为什么 paypal 会禁用这些选项。

我知道(从以前的头疼:))在 Windows cURL 上使用过时的证书文件。

但是我的服务器上有一个更新的证书文件,我可以直接使用:

curl_setopt($ch, CURLOPT_CAINFO, 'E:\path\to\curl-ca-bundle.crt');

如果只需要使用另一个(更新的)证书文件,为什么 PayPal 会“推荐”禁用它。

这样不是更安全吗?

或者我错过了什么(我很确定 PayPal 有足够的钱来购买有效证书:p)?

【问题讨论】:

“在 Windows cURL 上使用过时的证书文件”是完全错误的。 curl 根本不提供任何 CA 证书捆绑包,因此更新的责任落在用户身上... @Daniel Stenberg:好的,我已经有一段时间没有在 Windows 上使用 cURL 了。在 7.18.0(我知道 2008 年 1 月 28 日)之前,cURL 曾经附带过时的证书包。 :) 你知道的...... 你是对的。我的措辞很草率,因为我可能应该提到几年前 curl 确实 发布了一个 CA 证书包......对不起,感谢您澄清这一点! @DanielStenberg:谢谢你自己。如果我从你@curl.haxx.se 那里得到我的信息,我不会感到惊讶 :) 【参考方案1】:

一个原因可能是它避免了支持问题,人们在每年 1 美元的共享主机上运行脚本,遇到问题等。 最佳实践?不会。但是除了 ctrl+c ctrl+v 有更多知识的人将能够正确设置它。

编辑:我们当前的示例代码强制使用 VERIFYPEER 和 VERIFYHOST。如果您遇到任何 SSL 握手错误,请记住这一点,因为您可能需要指向根证书文件副本。

【讨论】:

【参考方案2】:

是的,确保客户端使用更新的 CA 证书包会更安全。 (这个问题是关于什么的,他们已经有证书了。)

【讨论】:

以上是关于PayPal cURL 选项(CURLOPT_SSL_VERIFYPEER 和 CURLOPT_SSL_VERIFYHOST)问题的主要内容,如果未能解决你的问题,请参考以下文章

PayPal 最近的 TLS 1.2 / HTTP 1.1 更新以及何时使用

Paypal ssl 握手失败

PayPal 沙盒上的 cURL 56 错误

Paypal 沙箱 CURL 执行 - “SSL 连接错误”

curl中的paypal MALFORMED REQUEST错误

用于 paypal ipn 的 curl 或 fsockopen