当我试图让 GuzzleHttp(Mac 上的 php+apache)从 www.googleapis.com 获取页面时,我最终来到了这里。
这是我的最终解决方案,以防它帮助任何人。
查看任何域的证书链给你这个错误。对我来说,它是 googleapis.com
openssl s_client -host www.googleapis.com -port 443
你会得到这样的东西:
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.googleapis.com
i:/C=US/O=Google Inc/CN=Google Internet Authority G2
1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
注意:我在解决问题后捕获了这个,你的链输出可能看起来不同。
然后你需要查看 php.ini 中允许的证书。在页面中运行 phpinfo()。
<?php echo phpinfo();
然后查找从页面输出加载的证书文件:
openssl.cafile /usr/local/php5/ssl/certs/cacert.pem
这是您需要通过添加正确的证书来修复的文件。
sudo nano /usr/local/php5/ssl/certs/cacert.pem
您基本上需要将正确的证书“签名”附加到此文件的末尾。
您可以在此处找到其中一些:如果需要,您可能需要在链中搜索/搜索其他人。
它们看起来像这样:

(注意:这是一张图片,所以人们不会简单地从 stackoverflow 复制/粘贴证书)
一旦正确的证书在这个文件中,重新启动 apache 并测试。