【问题标题】:Is it possible to tear down the SSL session from servelt filter?是否可以从 servlet 过滤器中删除 SSL 会话?
【发布时间】:2013-06-01 18:11:20
【问题描述】:

我正在 servlet 过滤器中实现证书身份验证。我使用httpRequest.getAttribute("javax.servlet.request.X509Certificate") API 获取客户端证书。当用户第一次启动浏览器并访问 Web 服务器时,底层 SSL 请求客户端证书,浏览器提示选择证书。但是,在用户注销并且我使 HTTP 会话无效后,如果用户没有关闭浏览器并返回 Web 服务器,则底层 SSL 不会触发浏览器再次提示选择证书。我认为这是因为用户在 HTTP 层从 Web 服务器注销后 SSL 会话没有被拆除。我的问题是,有没有办法使来自 servlet 的底层 SSL 会话无效?一个更普遍的问题,如何让浏览器在用户从 Web 服务器注销后重新提示选择证书?

谢谢, 帮派

【问题讨论】:

    标签: authentication ssl servlet-filters


    【解决方案1】:

    我的问题是,有没有办法使 servlet 的底层 SSL 会话无效?

    您将不得不编写一个 Tomcat Valve 并且可能还要修改一些 Tomcat 源代码。我已经深入了解了 Tomcat HTTPS/身份验证源代码,但还没有看到可以为您提供 SSLSession 的钩子。

    一个更普遍的问题,如何让浏览器在用户从 Web 服务器注销后重新提示选择证书?

    使 SSL 会话无效,如果你能做到,可能有也可能没有这种效果。我认为这将是特定于浏览器的。

    【讨论】:

    • 我使用了与测试身份验证过滤器相同的浏览器 (IE9) 来访问需要客户端证书进行身份验证的远程网站。当我注销该网站并重新登录时,浏览器会重新提示输入证书。所以我相信它可以从服务器端实现。也许那个网站的实现是在 SSL 层。
    猜你喜欢
    • 1970-01-01
    • 2013-07-18
    • 2015-09-12
    • 2012-04-13
    • 1970-01-01
    • 2011-09-23
    • 2011-07-29
    • 1970-01-01
    • 2013-10-22
    相关资源
    最近更新 更多