【发布时间】:2011-10-31 02:39:50
【问题描述】:
美好的一天!
我有可通过 SSL (https://) 访问的 REST API。我想将正确的证书(或证书链)连同我编写的 PHP 和 CURL 脚本一起提出请求。
以下是来自我的目标 (http://api.vkontakte.ru) 的证书在 Firefox 中的样子:
http://speedcap.net/img/bc687485819715c65d6fe1e4ca1fdc40/1a2be.png
这是来自 Firefox 保存的“PEM 格式的证书链 X.509”的 sn-p (此处描述:http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/):
-----BEGIN CERTIFICATE-----
MIIFVzCCBD+gAwIBAgIHKx5Ov2FOejANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
[..skip...]
0npsf5fkvT8E13NgVY0PK6V/baMTlTgWXKQZ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMx
[..skip...]
qDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZEjYx8WnM25sgVjOuH0aBsXBTWV
U+4=
-----END CERTIFICATE-----
这是 CURL 初始化的代码示例:
$this->ch = curl_init();
curl_setopt_array($this->ch, array(
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_AUTOREFERER => TRUE,
CURLOPT_FOLLOWLOCATION => TRUE,
CURLOPT_SSL_VERIFYPEER => TRUE,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CAINFO => <path to my cert>,
));
我收到 CURL 错误 60 (CURLE_SSL_CACERT) 抱怨证书错误。
我尝试过的:
我已验证使用了我的证书文件,因为当我指定错误的路径时,它会抱怨找不到证书(错误 70)
我已使用 Facebook SDK 及其证书链检查我的 CURL 是否适用于此类设置
我尝试导出不同的链(包括或不包括)链中的最后一个证书
试过
CURLOPT_SSL_VERIFYHOST => 1。
欢迎任何想法!
【问题讨论】: