谷歌 OpenID 在 WordPress 的 OpenID 插件中无法使用

3
WordPress的OpenID插件似乎无法接受谷歌OpenID提供者链接中的任何一个:
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 Engage插件可以使用,但由于其他问题无法使用。
5个回答

4
问题已解决。由于Google、Yahoo等OpenID提供商提供了https端点,当curl向其发出POST请求时,会尝试验证另一端 - 由于curl没有一组CA证书,因此它在所有这些端点上都失败了。
解决方案是要么告诉curl不要验证提供程序,要么为Google提供正确的CA证书。

那么,你是如何在WordPress上实现的呢? - grilix
1
如果您可以在主机上安装SSL证书,那是最好的选择。否则,请查看OpenID PHP代码,找到curl尝试连接提供程序的位置,并注释掉验证选项。我忘记了确切的细节,但应该不难弄清楚。 - Vanwaril
很好,我不熟悉这些“CA”方面的东西:P,但这会对我有所帮助。谢谢! - grilix

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

你的服务器上可能存在CA证书问题。Google的证书经常出现问题。

此外,我已经在我的Apache系统上使其工作,你的服务器也可能存在问题。尝试找到适用于你的系统的CA证书包并安装它。


0

正如@Vanwaril和@tarantinofan所指出的那样,正确的方法是在您的服务器上安装适当的证书。

但是,如果您选择采取其他路线,就像@Vanwaril提到的那样,并注释掉负责端点验证的openid代码库中的行,则执行以下操作:

openid\lib\Auth\Yadis\ParanoidHTTPFetcher.php - 在第152行后插入以下行

curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);

openid\liv\Auth\OpenID\consumer.php - 在_idResCheckSignature函数中注释掉第970至979行,使该函数返回null而不是openid错误

再次强调,这并不建议,但您可以至少进行操作,直到您能够在服务器上安装正确的证书。

编辑:此链接对处理证书非常有帮助: 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

这是由OpenID插件中的curl调用引起的。

以下方法对我有效。来源:https://dev59.com/ZGEi5IYBdhLWcg3wnNXA#21114601

  1. 使用此证书根证书包: https://curl.haxx.se/ca/cacert.pem

  2. 将此证书包复制到您的磁盘上,并在php.ini中使用它

    curl.cainfo = "path_to_cert\cacert.pem"

确保在更改后重新启动服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接