如何触发SSL重新握手的web浏览器?(How to trigger SSL rehandshake

2019-07-29 01:20发布

我有一个配置为请求SSL客户端证书的Web服务器。 如果客户有一个接受的证书,他们将看到的实际内容,但如果不这样做,我退回到没有SSL客户端身份验证和表明通知他们到他们的安全令牌,然后再试一次一个错误页面。

问题是,即使他们他们的道理,因为它认为,本届会议是好的浏览器不会重新协商一个新的SSL会话。 所以,我需要一种方法来废止目前的SSL会话。

我试图做到这一点的服务器,这是一个Tomcat 6:

response.setHeader("Connection", "close");          // open new socket next time
response.flushBuffer();

Object sslSessionMgr = request.getAttribute("javax.servlet.request.ssl_session_mgr");
if (sslSessionMgr != null) {
    try {
        Method invalidateSession =
                Class.forName("org.apache.tomcat.util.net.SSLSessionManager").getMethod("invalidateSession");
        invalidateSession.setAccessible(true);
        invalidateSession.invoke(sslSessionMgr);
    } catch (Exception e) {/*ignore*/}
}

但事实证明, sslSessionMgr总是null ,我不知道我在做什么错在这里。

在课程的客户端没有通用的解决方案,但所幸window.crypto.logout()确实对于Firefox的伎俩。 我读的地方,相当于IE浏览器将是document.execCommand("ClearAuthenticationCache")或者一些ActiveX控件? 在任何情况下,我似乎无法做到这一点对IE或Chrome。

所以,我能做些什么吗? 我可以修复这些解决方案,或有任何其他的吗?

Answer 1:

不幸的是,这不是在Chrome尚未支援,在讨论这个问题 。

据我所知, javax.servlet.request.ssl_session_mgr伎俩只能从的Apache Tomcat 7。



文章来源: How to trigger SSL rehandshake on a web browser?