【问题标题】:DotNetOpenAuth - diagnosing "No OpenID Endpoint Found" on MonoDotNetOpenAuth - 在 Mono 上诊断“未找到 OpenID 端点”
【发布时间】:2010-10-16 07:18:39
【问题描述】:

我正在运行 DotNetOpenAuth 的 mono 分支构建,在尝试使用 google 进行身份验证时遇到 No OpenID Endpoint Found 错误问题,但不确定如何诊断它们。

更多信息:

  • 在 Windows 下运行相同的 mono 分支构建。
  • 使用本地 openid 提供程序进行身份验证可以正常工作(Windows 和 Linux)。
  • 使用 myopenid 进行身份验证有效(可能是因为它不像 google 那样使用 https?)
  • 相同的 Web.Config,Windows 和 Linux 下的所有内容都二进制。
  • 已禁用 DNOA openid cacheDiscovery 设置。
  • 已从 Linux 机器检查 SSL 是否可以通过防火墙。 (即:wget @987654321@ 有效)。
  • 已检查 apache 错误日志,未报告错误。

关于如何诊断的任何提示?

跟进:仍在调查此问题,据我所知,这是与 dotnetopenauth 无关的单声道/ssl 问题。来自 C# 代码的简单 ssl 请求失败,并从服务器收到无效证书。错误代码:0xffffffff800b010a 异常。

在 mono 2.4/ubuntu 9.10 桌面下运行 mozroots 可以解决问题,但在 mono 2.6/ubuntu 10.10 服务器上运行相同的 mozroots 命令没有帮助。我正在使用这个:

yes yes|sudo mozroots --import --machine

它说它导入了证书,但是请求https://www.google.com 的简单命令行程序仍然失败。

【问题讨论】:

  • 这两天。谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢!!!

标签: linux mono dotnetopenauth


【解决方案1】:

您需要在机器存储中的“certs”目录旁边创建一个空的“keypairs”目录:

  sudo mkdir /usr/share/.mono/keypairs

mozroots(和引擎盖下的 certmgr)不会创建它,但没有它,mono 运行时将拒绝建立连接(并且它不能自己创建它,因为机器存储只能由 root 写入;为什么它需要创建它然后留空,我不知道)。

【讨论】:

  • 顺便说一句 1. Brad 的解决方案只有在 /var/www/.config/.mono/ 可由 www-data 写入时才有效
【解决方案2】:

这是一个 hack 答案,但至少我让它工作了......

似乎机器证书存储在 mono 2.6/ubuntu 10.10 服务器中不起作用。不知道为什么。

修复方法是将 mozroots 根证书导入 www-data 用户证书存储。由于我不知道如何使用 mozroots 工具执行此操作,因此我像这样手动操作:

sudo mkdir /var/www/.config/.mono/certs/Trust
sudo mkdir /var/www/.config/.mono/certs/CA
sudo cp /usr/share/.mono/certs/Trust /var/www/.config/.mono/certs/Trust

现在可以了……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多