2017-02-12 6 views
0

, поэтому я новичок в веб-разработке, так голый со мной. Я получаю эту ошибку:cURL SSL-выпуск: не удается идентифицировать локального эмитента

SSL problem: can't identify local issuer 

когда я вызываю функцию, чтобы сохранить изображение или получить пользователь Facebook изображения:

file_get_contents() 

Что я сделал это:

  • I мой сайт работает на Azure * .azurewebsites.com
  • Я добавил свой пользовательский домен и сертификат ssl, которые были куплены с GoDaddy
  • Я создал запрос о подписании сертификата (CSR) (который просил GoDaddy для) с помощью OpenSSL на моем Mac
  • подписал его с ним и загрузить его, чтобы получить .P7B файл и файл .crt
  • я добавил файл .crt в Azure и все работает отлично, мой пользовательский домен теперь имеет замок рядом с ним

таким образом, после этих шагов, войдя с Facebook получил эту ошибку и поэтому я сделал временное решение:

curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false); 

Это не рекомендуется, конечно, но это allo ws меня, чтобы проверить остальную часть сайта. Ошибка все же произошла, но только при вызове file_get_contents(). Я испробовал эти исправления из того, что я видел, прочерчивая:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/cacert/cacert.pem"); 

Но не кубики. Может ли кто-нибудь объяснить, что такое ошибка, а также бороться с ней? Это было бы здорово. А также, это может быть связано с созданием моего запроса на подписание сертификата с OpenSSL ... не уверен. Пожалуйста подтвердите.

Спасибо!

+0

Почему вы используете ssl pem при извлечении файла? почему бы не использовать https: // предполагается, что он уже установлен на сервере. Мне интересно, почему вы так делаете? – unixmiah

+0

Итак, я использую Parse Server PHP SDK, я просто положил curl_setopt ($ ch, CURLOPT_CAINFO, getcwd(). "/cacert/cacert.pem"); в ParseClient.php, когда я извлекаю файл, я делаю file_get_contents ($ _FILES ['userImg'] ['tmp_name']) или file_get_contents ('https://graph.facebook.com/'. $ user ['id '].'/picture? type = large & return_ssl_resources = 1 ') – adambargh

ответ

0

curl_setopt флаги работают только с обработчиком, который вы передаете этим вызовам. file_get_contents не имеет никакого представления ни о каком из CURLOPT_SSL_VERIFYPEER или CURLOPT_SSL_VERIFYHOST флаги.

Изменение file_get_contents для завивки вызовов.

+0

, так что вы хотите, чтобы я создал другую функцию для имитации file_get_contents? – adambargh

+0

Не создавайте, используйте существующий. –

+0

Можете ли вы подробнее продумать? Я не знаком с php и curl – adambargh