是否可以从servlet过滤器中拆除SSL会话?

时间:2013-06-05 21:25:57

标签: authentication ssl servlet-filters

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

谢谢, 刚

1 个答案:

答案 0 :(得分:0)

  

我的问题是,有没有办法让servlet中的底层SSL会话失效?

您必须编写Tomcat Valve并且可能也会更改一些Tomcat源代码。我已经在Tomcat HTTPS /身份验证源代码中深入了解了几层,我还没有看到一个可以为您提供SSLSession的钩子。

  

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

如果可以执行此操作,SSL会话无效,可能会也可能不会产生这种影响。我认为这将是特定于浏览器的。