2011-01-14 5 views
3

Плагин OpenID для WordPress, кажется, не принимают либо из ссылок поставщика Google OpenID:Google OpenID не работает с OpenID плагин в WordPress

http://google.com/profiles/username 

или

https://google.com/accounts/o8/id 

возвращает ошибку (для обоих):

Could not discover an OpenID 
identity server endpoint 
at the url: 
http://google.com/profiles/username 

Любая идея, почему? Janrain задействует плагин, но я не могу использовать это из-за других проблем с этим.

ответ

4

Проблема решена. Поскольку Google, Yahoo и некоторые другие поставщики OpenID предоставляют конечные точки https, curl пытается проверить другой конец при выполнении запроса POST, поскольку он не поставляется с пакетом сертификатов CA, он не работает на всех таких конечных точках.

Решение заключается в том, чтобы сказать, что он не проверяет поставщика или не дает ему правильный сертификат ЦС для Google.

+0

так, как вы это сделали на wordpress? – grilix

+1

Если вы можете установить SSL-сертификаты на свой хост, это лучший вариант. В противном случае пройдите код OpenID PHP, чтобы найти, где завиток пытается подключиться к провайдеру и прокомментировать параметры проверки. Я забыл точные детали, но это не должно быть слишком сложно понять. – Vanwaril

+0

Ничего, я не знаком с такими «СА»: P, но это мне поможет. Спасибо! – grilix

0

Должно возникнуть проблема с сертификатами CA на вашем сервере. У Google много проблем с сертификатами.

Кроме того, у меня есть эта работа с моей системой с Apache, может быть и проблема с вашим сервером. Попробуйте найти пакет сертификатов CA для вашей системы и установить его.

0

Пожалуйста, проверьте недостающих плагинов в PHP инсталляции

/etc/php.d/dom.ini, 
/etc/php.d/mysql.ini, 
/etc/php.d/mysqli.ini, 
/etc/php.d/pdo_sqlite.ini, 
/etc/php.d/wddx.ini, 
/etc/php.d/xmlreader.ini, 
/etc/php.d/xmlwriter.ini, 
/etc/php.d/xsl.ini, 
0

Как @Vanwaril и @tarantinofan отметил, правильный способ сделать это получить соответствующие сертификаты, установленные на вашем сервере.

Однако, если вы решили взять другой маршрут, как уже упоминалось @Vanwaril, и закомментируйте строки в базе кода OpenId, который отвечает за проверку конечных точек, то сделайте следующее:

OpenID \ Lib \ Auth \ Yadis \ ParanoidHTTPFetcher.php - вставить следующую строку после строки 152

curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false); 

Вконтакте \ Liv \ Auth \ OpenID \ consumer.php - закомментируйте строки 970 до 979 в функции _idResCheckSignature так, что функция возвращает нулевое значение вместо ошибки openid

Опять же, это не рекомендуется, но вы можете по крайней мере двигаться вперед, пока не сможете получить соответствующие сертификаты, установленные на вашем сервере.

EDIT: и эта связь очень полезна для работы с сертификатами: https://web.archive.org/web/20090214215411/http://curl.haxx.se/docs/sslcerts.html

0

я получаю ту же ошибку, и проверяя журналы ошибок Apache я получил следующее

CURL error (60): SSL certificate problem: unable to get local issuer certificate

Это было вызвано curl вызовами из плагина OpenID.

Следующие работали для меня.Источник: https://stackoverflow.com/a/21114601/3826642

  1. Используйте этот сертификат корневого сертификата расслоением: https://curl.haxx.se/ca/cacert.pem

  2. Скопируйте этот сертификат расслоением на вашем диске. И использовать это на php.ini

    curl.cainfo = "path_to_cert\cacert.pem"

Обязательно перезагрузить сервер после внесения изменений.

Смежные вопросы