Я пытаюсь создать прокси-сервер, где я буду запрашивать объект JSON из API с помощью curl. Я смог успешно выполнить эту работу, за исключением сертификации.Загрузил сертификат PEM, но все еще получил «неспособность получить сертификат локального эмитента»
<?php
error_reporting(E_ALL);
$url = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20csv%20where%20url%3D'http%3A%2F%2Ffinance.yahoo.com%2Fd%2Fquotes.csv%3Fs%3DMSFT%2BFFIV%26f%3Dnab'&format=json&diagnostics=true&callback=";
$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "\VeriSignClass3PublicPrimaryCertificationAuthority-G5.crt");
// Perform the request, and save content to $result
$result = curl_exec($ch);
if(curl_errno($ch)){
echo 'Curl error: ' . curl_error($ch);
} else {
echo $result;
}
exit();
?>
Я уже скачал файл PEM сертификации yahooapis (с и без цепи) и помещаю его в том же уровне папки как файл proxy.php, но я все еще получаю ошибку «не удалось получить сертификат местного эмитента ".
Любые идеи о том, что может отсутствовать?
Кроме того, не рекомендуется устанавливать значение CURLOPT_SSL_VERIFYPEER в false, поскольку я знаю, что это обходит проверку. Мне нужно проверить сервер, прежде чем он подключится.
Спасибо!
Я загрузил сертификат G3, и отпечаток пальца действительно отличается. У вас есть ссылка на другой публичный API, который я мог бы проверить на наличие этого отпечатка или сертификата? Не имеет значения, какой результат до тех пор, пока это JSON. –
Нет, я не знаю ни одного другого API. –