【问题标题】:PHP Curl: detect "unable to get local issuer certificate" errorPHP Curl:检测“无法获取本地颁发者证书”错误
【发布时间】:2015-09-08 12:10:15
【问题描述】:

有时我的 PHP Curl 用户没有安装受信任的证书。

当我的 php 应用尝试使用 curl 联系 HTTPS 服务器(“curl out”)时,尝试失败。

如果我将 PHP Curl 设置为详细模式,我可以看到错误消息

SSL 证书问题:无法获取本地颁发者证书

但是如何从我的代码中检测到该问题?

Curl 对于 CURLINFO_HTTP_CODECURLINFO_SSL_VERIFYRESULT 值都返回 0。

我想以编程方式检测这种情况,以便告诉管理员该怎么做。

【问题讨论】:

  • 我们是在谈论本地用户试图 CURL 退出还是您试图 CURL 进入?
  • 蜷缩起来。我已经更新了 Q。谢谢。
  • 下一个问题:这些自签名证书是您正在处理的,还是只是使用未安装的 CA 签名的?
  • 该服务器是一个普通的商业服务器,其证书可追溯到 Verisign。我知道如何解决这个问题(从 curl 网站或其他地方安装/配置受信任的 CA 证书)。我想弄清楚的是如何自动告诉管理员他们的 PHP 安装没有配置受信任的 CA 列表?

标签: php ssl curl ssl-certificate


【解决方案1】:

你可以试试:

public function get($url){
     $ch = curl_init($url);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     $result = curl_exec($ch);
     if(curl_errno($ch)){
         throw new Exception(curl_error($ch));
     }
     return $result;
}
try{
     $object->get('http://example.com');
} catch(Exception $e){
     //do something with the exception you caught
}

【讨论】:

    猜你喜欢
    • 2018-03-16
    • 2017-09-17
    • 2017-07-19
    • 2016-07-06
    相关资源
    最近更新 更多