【问题标题】:OpenID Over SSL with self signed certificate带有自签名证书的 OpenID Over SSL
【发布时间】:2010-09-12 23:09:32
【问题描述】:

我在我的个人服务器上设置了自己的开放 ID 提供程序,并在我的 apache 配置文件中添加了到 https 的重定向。不使用安全连接时(当我禁用重定向时)我可以正常登录,但使用重定向我无法登录并显示以下错误消息:

底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。

我猜这是因为我使用的是自签名证书。

谁能确认自签名证书是否是问题所在?如果没有,有人知道问题是什么吗?

【问题讨论】:

    标签: ssl openid ssl-certificate


    【解决方案1】:

    OpenID 以重定向透明的方式设计。只要通过 GET 或 POST 在每次重定向时保留必要的键/值对,一切都会正常运行。

    与不使用自签名证书的消费者实现兼容性的最简单解决方案是使用非加密端点,将checkid_immediatecheckid_setup 消息重定向到加密端点。

    在您的服务器代码中执行此操作比使用 Web 服务器重定向更容易,因为前者可以更轻松地处理 POST 请求,同时还能将代码保持在一起。此外,您可以使用相同的端点来处理所有 OpenID 操作,无论是否应通过 SSL 提供服务,只要进行了适当的检查。

    例如,在 PHP 中,重定向可以很简单:

    // Redirect OpenID authentication requests to https:// of same URL
    // Assuming valid OpenID operation over GET
    if (!isset($_SERVER['HTTPS']) &&
            ($_GET['openid_mode'] == 'checkid_immediate' ||
             $_GET['openid_mode'] == 'checkid_setup'))
        http_redirect("https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}");
    

    由于openid.return_to 值是针对普通 HTTP 端点生成的,因此就消费者而言,它仅处理未加密的服务器。假设 OpenID 2.0 使用会话和 nonce 进行正确操作,那么在消费者和您的服务器之间传递的任何信息都不应泄露可利用的信息。您的浏览器和 OpenID 服务器之间的可被利用的操作(密码窥探或会话 cookie 劫持)是通过加密通道完成的。

    除了阻止窃听者之外,通过 SSL 执行身份验证操作还允许您使用 secure HTTP cookie 标志。如果您希望允许,这将为checkid_immediate 操作增加另一层保护。

    【讨论】:

      【解决方案2】:

      (免责声明:我是 OpenID 的新手,所以在这里我可能是错的。) Open ID Consumer(例如 StackOverflow)和 Open ID Provider(您的服务器)之间的通信不需要 HTTPS——它会在纯 HTTP 上工作得一样好,一样安全。您需要做的是将您的服务器配置为仅在显示您的登录页面时才切换到 HTTPS。在这种情况下,只有您的浏览器需要关注自签名证书。您可以将证书导入您的 PC,一切都会像威瑞信颁发的证书一样安全。

      【讨论】:

        【解决方案3】:

        为您的 OpenID URL 使用 SSL 的主要好处是它为依赖方提供了一种机制来发现 DNS 是否已被篡改。依赖方无法判断带有自签名证书的 OpenID URL 是否已被泄露。

        在提供商的端点 URL 上使用 SSL 还可以获得其他好处(更容易建立关联,不会窃听扩展数据),如果您使用自签名证书,这些好处仍然存在,但我认为这些好处是次要的。

        【讨论】:

        • 如果我不能使用自签名证书,那么我将不得不使用 http 连接,在这种情况下,我会失去主要和次要好处。我宁愿不验证 URL 并发送加密密码,而不是不验证 URL 并发送纯文本密码。
        • 您可以在不更改 OpenID 或端点的情况下将 https 用于用户界面。例如,跟踪 myOpenID 在验证 http 标识符时使用的流程。它将浏览器从 http 端点转发到 https 页面。
        • 嗯,这你需要什么?嘿,一般来说,RP不应该与 https 一起使用自签名证书。无论您使用重定向玩什么技巧,除非您拥有由 RP 信任的人签署的证书,否则您无法获得使用 SSL 的安全性。
        • 鉴于 NSA 已投资 110 亿美元用于篡改证书和 CA 本身,如今自签名证书可能更加安全。为了有效地阻止窥探者和其他犯罪分子,下一个合乎逻辑的事情将是不涉及商业证书提供者的强端到端加密。
        【解决方案4】:

        听起来很像。您的 OpenID 服务器的客户端不信任根证书颁发机构。

        【讨论】:

        • 这是有道理的,因为我自己生成了证书。我觉得不需要每年支付 200 美元威瑞信,以免偶尔出现警告框。特别是因为我是唯一一个连接到机器的人。
        猜你喜欢
        • 1970-01-01
        • 2015-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-06
        • 2019-04-26
        • 2015-03-06
        相关资源
        最近更新 更多