【问题标题】:How do you get a users X.509 certificate over an HTTP request - (without SSL)您如何通过 HTTP 请求获取用户 X.509 证书 - (无 SSL)
【发布时间】:2012-08-24 11:39:31
【问题描述】:

我们希望使用 LDAP 中的 X.509 证书和组对用户进行身份验证/授权。

使用 Tomcat 5.5,我们能够通过 SSL 获取 X.509 证书,然后切换回 http 并继续在请求中使用 userPrincipal 来做到这一点。迁移到 Tomcat 6 和 7 后,userPrincipal 在切换回 http 后不再可用。

Can I use SSL certificate without using a HTTPS connection?这个问题中,据说可以在没有SSL的情况下申请X.509证书。我正在尝试确认是否可行,以及是否有人知道如何做到这一点。

【问题讨论】:

  • 当您退出 HTTPS 时,您怎么知道它仍然是同一个用户? A. 你不能。

标签: java authentication x509


【解决方案1】:

让我们考虑一下。

用户认证通常是这样的:

  1. 要求客户证明其身份
  2. 接收用户身份证明
  3. 传回一个唯一的随机字符串,客户端可以在未来使用它来证明他的身份(会话令牌)。

在身份验证后返回未加密的 HTTP 是个坏主意。每个人都可以在线上看到会话令牌。他们可以窃取它并用它来冒充用户。有关示例,请参阅FBController 或搜索“会话劫持”。

使用未加密的会话来传递用户身份证明同样是个坏主意。每个人都可以重播这个并以用户的身份冒充。无论您使用 X.509 证书还是用户名/密码:都是一样的。

如果你真的想要,你可以使用 Javascript 实现你自己的伪 HTTPS。例如,雅虎使用 JavaScript 获取用户密码的加盐 SHA1,然后再通过网络发送。您可以使用 Javascript 使用 X.509 的私钥对随机数进行签名,并通过公共证书发送。 请注意,使用此方法时您仍然对会话劫持持开放态度,因此这只是一种虚假的安全感!

更好的方法是只使用标准 HTTPS。全连接是加密的,这意味着在传递用户证明、会话劫持甚至查看用户请求的信息时不存在机密性问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 2012-10-26
    • 2017-03-10
    • 1970-01-01
    • 2014-06-10
    • 2014-07-10
    • 1970-01-01
    相关资源
    最近更新 更多