我正在调试某人在使用 PHP 插件访问支付网关时遇到的问题。他在单击结帐按钮后能够避免 404 错误的唯一方法是将 CURLOPT_SSL_VERIFYPEER 和 CURLOPT_SSL_VERIFYHOST 设置为 0。我知道这很糟糕,但有人知道为什么会这样吗?它似乎不信任支付网站的 SSL 证书......这可能只是他的服务器不信任某些 SSL 证书的问题吗?当检查打开时,他从 curl_exec() 函数获得的响应只是错误的。
编辑:所以我看到多个解决方案说在获取证书文件后向我的 curlopt 行添加类似的内容:
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/certificate.cert");
但是,如果我要处理一群遇到此问题的独立客户怎么办?这条路并不适合所有人。我可以用什么代替适用于每个人?
如果我不能放一个通用的行,那么我会告诉这个人把他们的证书文件放在哪里?这必须由他们的网络托管服务来完成,对吧?
最佳答案
这里有一个很好的答案来解决你的问题: Security consequences of disabling CURLOPT_SSL_VERIFYHOST (libcurl/openssl)
我建议分析一下支付网站出具的证书..
php 插件使用的 url 是否与证书的通用名称字段中指定的完全相同?
如果您确定所提供的证书是正确且可信的,您可以设置 CURLOPT_CAINFO 选项来信任该证书并避免错误: curl_setopt($ch, CURLOPT_CAINFO, 'C:\path\to\curl-ca-bundle.crt');
关于php - 绕过 SSL 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17234950/