我正在servlet过滤器中实现证书身份验证。我使用httpRequest.getAttribute("javax.servlet.request.X509Certificate")应用编程接口获取客户端证书。当用户启动浏览器并第一次访问web服务器时,底层SSL请求客户端证书,浏览器提示选择证书。但是,在用户注销并且我使HTTP会话无效之后,如果用户不关闭浏览器并返回Web服务器,底层SSL不会触发浏览器再次提示证书选择。我认为这是因为在用户从HTTP层的Web服务器注销后,SSL会话没有断开。我的问题是,有没有一种方法可以使servlet的底层SSL会话失效?一个更一般的问题是,在用户从Web服务器注销后,如何让浏览器重新提示证书选择?
谢谢你,阿刚
发布于 2013-06-06 07:50:38
我的问题是,有没有一种方法可以使servlet的底层SSL会话无效?
您将不得不编写一个Tomcat Valve,可能还需要修改一些Tomcat源代码。我已经深入研究了Tomcat HTTPS/身份验证源代码的几个层次,但我还没有看到一个可以提供SSLSession的钩子。
一个更一般的问题,在用户从网络服务器注销后,如何让浏览器重新提示您选择证书?
使SSL会话无效(如果可以这样做的话)可能会也可能不会有这种效果。我认为这应该是特定于浏览器的。
https://stackoverflow.com/questions/16950171
复制相似问题