Webmatrix SSL证书:“无法获得本地颁发者证书”

我正在使用PHP-cURL与Twitter的API进行交互的项目,以构build我的RESTful请求。 就像(听我说,所有variables分配等):

$headers = array( "POST /oauth2/token HTTP/1.1", "Host: api.twitter.com", "User-Agent: Twitter Application-only OAuth App v.1", "Authorization: Basic ".$base64_encoded_bearer_token."", "Content-Type: application/x-www-form-urlencoded;charset=UTF-8", "Content-Length: 29" ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials"); $header = curl_setopt($ch, CURLOPT_HEADER, 1); $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $retrievedhtml = curl_exec($ch); echo curl_error($ch); //Throws Error curl_close($ch); 

我知道代码是好的,因为我已经上传到我的Pagodabox应用程序之一,它完美的作品。 但是,当我在本地testing时,使用Webmatrix,cURL会引发错误的SSL certificate problem: unable to get local issuer certificate 。 所以我知道这是我的目的。

如果我知道我正在将file upload到Pagodabox,那么这个问题就不会那么糟糕,但是这个应用程序所在的生产服务器正在运行Windows服务器(这就是为什么我正在为本地testing运行Webmatrix)以及我的初步testing有同样的问题。

更新 :对于遇到同样问题的人,我发现阅读这些项目代码很有帮助:

Codebird-PHP
Twitter的应用程序只有authentication或OAuth的PHP

CURL将在Windows的以下path中的名为curl-ca-bundle.crt的文件中查找可信的SSL证书:

  • 你的程序所在的目录
  • 当前的工作目录
  • %windir%\system32
  • %windir%
  • %PATH%的目录

如果没有find,或者第一个找不到证书的颁发者证书(你必须信任你自己的证书),这个错误将被抛出。

解决这个问题的一个可能的方法是将证书链的其余部分包含在您正在呈现的证书中(对于PEM证书,简单地连接证书,签名证书的证书以及签署该证书的证书),直到find根证书,通常意味着该文件包含3个证书)。