具有自签名证书的OpenID Over SSL

时间:2008-09-25 02:01:15

标签: ssl openid ssl-certificate

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

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

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

任何人都可以确认自签名证书是否存在问题?如果不是,任何人都有任何想法是什么问题?

4 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:5)

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

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

在服务器代码中执行此操作比使用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操作,消费者和服务器之间传递的任何信息都不应泄露可利用的信息。您可以利用的浏览器和OpenID服务器之间的操作(密码侦听或会话cookie劫持)是通过加密通道完成的。

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

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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