Я пытаюсь отправить вихревой запрос со своим корректным APP_ID, APP_SECRET и т.д. к
https://oauth.vk.com/access_token?client_id=APP_ID&client_secret=APP_SECRET&code=7a6fa4dff77a228eeda56603b8f53806c883f011c40b72630bb50df056f6479e52a&redirect_uri=REDIRECT_URI
Я должен получить access_token от него, но получить ЛОЖЬ и curl_error()
распечатайте следующее сообщение иначе:
60: SSL certificate problem: self signed certificate in certificate chain
Мой код:
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, $url);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
if ( ! $output) {
print curl_errno($ch) .': '. curl_error($ch);
}
// close curl resource to free up system resources
curl_close($ch);
return $output;
Когда я перемещаюсь вручную в ссылку выше, я получаю access_token хорошо. Почему это не работает с завихрением? Справка.
Ответы, предлагающие отключить CURLOPT_SSL_VERIFYPEER
, не должны быть приняты. Вопрос, "Почему он не работает с ЗАВИХРЕНИЕМ", и, как правильно указано Праздниками Martijn, это опасно.
ошибка, вероятно, вызывается, не имея актуальный пакет корневых сертификатов CA. Это обычно - текстовый файл с набором криптографических подписей, которые завихряются использование для проверки host’s сертификата SSL.
необходимо удостовериться, что установка PHP имеет один из этих файлов, и что it’s актуальный (иначе загружают тот здесь: http://curl.haxx.se/docs/caextract.html ).
Затем набор в php.ini :
curl.cainfo = <absolute_path_to> cacert.pem
при установке его во времени выполнения используйте:
curl_setopt ($ch, CURLOPT_CAINFO, dirname(__FILE__)."/cacert.pem");
Это обходное решение опасно и не рекомендуемый :
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Это не хорошая идея отключить проверку однорангового узла SSL. Выполнение так могло бы выставить Ваши запросы взломщикам MITM.
На самом деле, Вам просто нужен актуальный корневой пакет сертификата CA. Установка обновленной так же легка как:
cacert.pem
файл от ВИХРЕВОЙ веб-сайт и Устанавливание пути к нему в Вашем файле php.ini, например, в Windows:
curl.cainfo=c:\php\cacert.pem
Вот именно!
Остаются безопасными и надежными.
ЭЙ ПАРНИ: ОЧЕНЬ ВАЖНЫЙ! Эта проблема свела меня с ума в течение пары дней, и я не мог выяснить то, что продолжало мое завихрение & установки openssl. Я наконец выяснил, что именно мой ПРОМЕЖУТОЧНЫЙ сертификат (в моем случае, GoDaddy) устарел. Я вернулся к своей godaddy панели администрации SSL, загрузил новый промежуточный сертификат, и проблема исчезла.
я уверен, что это - проблема для некоторых из Вас.
, По-видимому, GoDaddy изменил их промежуточный сертификат в какой-то момент, из-за проблем scurity, поскольку они теперь отображают это предупреждение:
"Убедиться использовать новые промежуточные сертификаты SHA-2, включенные в Ваш загруженный пакет".
Hope это помогает некоторым из Вас, потому что я сходил с ума, и это очистило проблему обо ВСЕХ моих серверах...
Если сертификаты SSL правильно не установлены в Вашей системе, можно получить эту ошибку:
ВИХРЕВАЯ ошибка 60: проблема сертификата SSL: не мог получить локальный сертификат выпускающего.
можно решить эту проблему следующим образом:
Загрузка файл с обновленным списком сертификатов от https://Перемещение curl.haxx.se/ca/cacert.pem
загруженный cacert.pem
файл к некоторому безопасному местоположению в Вашей системе
Обновление Ваш php.ini
файл и настраивают путь к тому файлу: