【发布时间】:2024-01-20 12:36:01
【问题描述】:
我收到此错误:
SSL problem: can't identify local issuer
一旦我调用该函数来保存图像或检索用户的 Facebook 图像:
file_get_contents()
我所做的是:
- 我的网站在 Azure *.azurewebsites.com 上运行
- 我添加了从 GoDaddy 购买的自定义域和 ssl 证书
- 我在我的 Mac 上使用 OpenSSL 创建了证书签名请求 (CSR)(GoDaddy 要求的)
- 用它签名并下载它以获得.p7b文件和.crt文件
- 我将 .crt 文件添加到 Azure,一切正常,我的自定义域现在旁边有锁
所以在这些步骤之后,用 Facebook 登录也出现了这个错误,所以我做了一个临时修复:
curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false);
当然不建议这样做,但它允许我测试网站的其余部分。错误仍然发生,但仅在调用 file_get_contents() 时发生。我已经根据我所看到的情况尝试了这些修复:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/cacert/cacert.pem");
但没有骰子。有人可以准确解释错误的含义并与之抗争吗?那简直太好了。而且,这可能是由于使用 OpenSSL 创建了我的证书签名请求......不确定。请确认。
【问题讨论】:
-
为什么在获取文件时使用 ssl pem?为什么不使用 https:// 它应该已经安装在服务器上。我想知道你为什么要这样做?
-
所以我使用 Parse Server PHP SDK,我只是把 curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/cacert/cacert.pem");在 ParseClient.php 中,当我获取文件时,我正在执行 file_get_contents( $_FILES['userImg']['tmp_name'] ) 或 file_get_contents('graph.facebook.com' . $user['id'] . '/picture? type=large&return_ssl_resources=1')
标签: php ssl curl openssl ssl-certificate