我正在使用cUrl和PHP向服务器发出请求(用于PayPal访问)贝宝开发者网站从未提及使用贝宝访问API需要SSL证书,但是我用于请求令牌的代码如下:$options = array( CURLOPT_URL => $url, CURLOPT_POST => 1, CURLOPT_VERBOSE => 1, CURLOPT_POSTFIELDS => $postvals, CURLOPT_RETURNTRANSFER => 1, CURLOPT_SSLVERSION => 3);curl_setopt_array($ch, $options);$response = curl_exec($ch); echo curl_error($ch);此回显输出以下错误:SSL certificate problem: unable to get local issuer certificate我的问题是:1)如果我只需要获取用户电子邮件,是否需要SSL才能使用贝宝访问?2)如果我不需要SSL,为什么会发生此错误?PS:端点如下:https : //www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/tokenservice
3 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
您可以通过添加以下内容来禁用SSL验证(从cURL 7.10开始默认启用):
CURLOPT_SSL_VERIFYPEER, false
你的$options,但是正确的方法是保持启用验证。
安全通知
如果远程站点使用已知CA颁发的证书,但验证仍然失败,则很可能是在远程服务器上错误地设置了证书(缺少中间证书等)。或者,您的系统不知道有关用于签署目标证书的二手证书颁发机构的信息。在这种情况下,您应该使用php.ini的curl.cainfo(文档)指向具有所有受支持的CA的有效PEM文件-这将使您的设置正确验证发行者链。
请注意,通过设置CURLOPT_SSL_VERIFYPEER到false你不解决这个问题!您正在解决它。这全都与安全性有关,因此可以暂时执行此操作,但是礼貌地说,将其部署在生产环境中并不明智,因为您将对“中间人攻击”开放。你被警告了。
- 3 回答
- 0 关注
- 577 浏览
添加回答
举报
0/150
提交
取消