0

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

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

在这个问题中,我可以在不使用 HTTPS 连接的情况下使用 SSL 证书吗?据说您可以在没有 SSL 的情况下请求 X.509 证书。我正在尝试确认是否有可能,以及是否有人知道如何做到这一点。

4

1 回答 1

3

让我们考虑一下。

用户身份验证通常是这样的:

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

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

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

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

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

于 2012-08-24T12:41:34.270 回答