Facebook Connect PHP SDK Ошибка проверки SSL в Curl Peer - PullRequest
1 голос
/ 20 мая 2010

Я интегрирую Facebook Connect в наше приложение. Я подумал, что использовать Facebook Official SDK на http://github.com/facebook/php-sdk - лучший способ, так как он рекламируется на вики FB Developers.

Но мне не удалось заставить его работать. При исследовании кода API я вспомнил свой предыдущий опыт использования параметра CURLOPT_SSL_VERIFYPEER. Этот параметр имеет значение по умолчанию «true», и в API он не задан, неявно он установлен как true.

Я изменил параметр CURLOPT_SSL_VERIFYPEER на false, и проблема решена. Используя его как true, я мог получить из API API для запроса / get / me запрос «boolean (false)», однако, установив для параметра CURLOPT_SSL_VERIFYPEER значение false, тот же запрос curl дал мне пользовательский объект json.

Здесь я хочу спросить, каковы побочные эффекты использования Facebook PHP SDK в качестве параметра «CURLOPT_SSL_VERIFYPEER», установленного в false. В более общем смысле, имеет ли смысл, если я инициирую сеанс curl без одноранговой проверки.

Ответы [ 2 ]

2 голосов
/ 21 мая 2010

Что-то не так с вашей установкой PHP. Скорее всего, у вас нет промежуточного сертификата ENTRUST, необходимого для проверки SSL-сертификата. Это их цепочка сертификатов,

Certificate chain
 0 s:/C=US/ST=California/L=Palo Alto/O=Facebook, Inc./CN=*.facebook.com
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3
 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
 2 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
   i:/C=US/O=Entrust.net/OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Secure Server Certification Authority

Установка CURLOPT_SSL_VERIFYPEER в значение false просто отключает проверку сертификата. Вы не должны делать это в производстве.

0 голосов
/ 18 сентября 2010

Попробуйте, это решило проблему для меня

Facebook :: $ CURL_OPTS [CURLOPT_SSL_VERIFYPEER] = false; Facebook :: $ CURL_OPTS [CURLOPT_SSL_VERIFYHOST] = 2;

...