我正在使用XAMPP进行开发。最近,我将xampp的安装从旧版本升级到1.7.3。
现在,当我卷曲启用HTTPS的网站,我得到以下例外
致命错误:未捕获的异常'RequestCore_Exception'与消息
cURL资源:资源
id # 55;cURL错误:SSL证书有问题,请验证CA证书是否OK。细节:
SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败(60)'
每个人都建议从PHP代码中使用一些特定的curl选项来解决这个问题。我觉得不应该这样。因为我的旧版本XAMPP没有任何问题,只是在安装新版本后才出现问题。
我需要帮助,以确定在我的PHP安装,Apache等设置更改可以解决这个问题。
当我试图让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中允许的证书。在页面中运行phpinfo()。
<?php echo phpinfo();
然后寻找从页面输出中加载的证书文件:
openssl.cafile /usr/local/php5/ssl/certs/cacert.pem
这是您需要通过向其中添加正确的证书来修复的文件。
sudo nano /usr/local/php5/ssl/certs/cacert.pem
您基本上需要将正确的证书“签名”附加到该文件的末尾。
你可以在这里找到一些:如果你需要的话,你可能需要谷歌/在链中搜索其他的。
https://pki.google.com/
https://www.geotrust.com/resources/root-certificates/index.html
它们是这样的:
(注意:这是一个图像,所以人们不会简单地从stackoverflow复制/粘贴证书)
在这个文件中有了正确的证书之后,重新启动apache并进行测试。