0

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

谢谢,刚

4

1 回答 1

0

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

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

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

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

于 2013-06-05T23:50:37.700 回答