【问题标题】:Bypassing SSL check绕过 SSL 检查
【发布时间】:2013-06-21 12:11:23
【问题描述】:

我正在调试某人在使用 PHP 插件访问支付网关时遇到的问题。在单击“结帐”按钮后,他能够避免 404 错误的唯一方法是将 CURLOPT_SSL_VERIFYPEER 和 CURLOPT_SSL_VERIFYHOST 设置为 0。我知道这很糟糕,但有人知道为什么会这样吗?似乎不信任支付网站的 SSL 证书……这可能只是他的服务器不信任某些 SSL 证书的问题吗?当检查打开时,他从 curl_exec() 函数得到的响应只是错误的。

编辑:所以我看到了多个解决方案,说在获取证书文件后向我的 curlopt 行添加类似的内容:

curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/certificate.cert");

但是,如果我要与一群遇到此问题的不同客户打交道怎么办?这条路并不适合所有人。我可以用什么来代替适用于每个人的内容?

如果我不能写一个通用的行,那么我会告诉这个人把他们的证书文件放在哪里?这必须由他们的网络托管服务来完成,对吧?

【问题讨论】:

标签: php security curl ssl


【解决方案1】:

这里是您问题的一个很好的答案: 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服务器上的某个地方下载它
  • /etc/pki/tls/certs/ca-bundle.crt 在哪里?
  • 对不起,我没理解你的最后一个问题。为了简单起见,用你的浏览器连接到你的 php 脚本中配置的 url(使用 https),检查证书,导出它,然后复制这个文件到你选择的路径中的 php 服务器.. 然后用这个文件的完整路径更改 CURLOPT_CAINFO 的第三个参数
  • 但我无法推动这些更改,因为该行并不适用于所有人,对吗?
【解决方案2】:

在此处检查您的 SSL 证书:http://www.digicert.com/help/ 我遇到了类似的问题,因为证书没有很好地链接。

【讨论】:

  • 它通过了该网站上的所有检查...我只是想弄清楚如何为 CURLOPT_CAINFO 设置该证书:P
猜你喜欢
  • 2015-12-18
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多