美好的一天!PHP CURL和SSL證書(或證書鏈)
我有可通過SSL(https://)訪問的REST API。我想把正確的證書(或證書鏈)連同我的腳本寫成PHP和CURL來提出請求。
下面是我的目標(http://api.vkontakte.ru)證書怎麼看起來像在Firefox:
http://speedcap.net/img/bc687485819715c65d6fe1e4ca1fdc40/1a2be.png
這裏是保存的「證書鏈X.509 PEM格式」從Firefox 片段(這裏所描述: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
)抱怨wron cert。
我已經試過什麼:
我覈實,我的證書文件被使用,因爲當我指定了錯誤的道路它抱怨找不到證書(誤差70)
我已經與Facebook SDK和他們的證書鏈,我的工作捲曲這樣的設置
我試圖導出不同的鏈(包括或不包括)的環比證書檢查
試過
CURLOPT_SSL_VERIFYHOST => 1
。
歡迎任何想法!
謝謝,它適用於這個包:http://curl.haxx.se/docs/caextract.html。但是,我應該如何爲我的目標網站提取正確的證書? – artvolk
我嘗試去掉那個ca文件只是爲了證明我在鏈中,它不起作用:( – artvolk
,風選過程不是我以前試過的東西,它只要你拿出一個就失效了嗎?如果是這樣,它可能是一個格式問題,否則,你可能需要不斷嘗試。 –