退出ssl会话

时间:2015-05-14 05:58:28

标签: java session servlets ssl ssl-certificate

我正在尝试关闭SSL连接,以防有人想要使用另一个证书作为使用client-cert作为身份验证方法的网页。 我知道如何关闭一个会议,坦克。什么我不知道,如何使SSLSession无效。 显然有一个,我可以通过request.getAttribute获取它的id(“javax.servlet.request.ssl_session”) 并且显然还不足以做session.invalidate(),为什么?因为我在logout.jsp中有它 重定向到我的index.jsp。现在,如果SSL连接失效,我应该 通过我的logout.jsp后,要求从我的浏览器证书中选择一个证书,我不是 我还在登录,我甚至在我的注销jsp中有一个request.setHeader(“connection”,“close”), 也没有帮助(我已经读过标题可能更多地被解释为浏览器的指南) 并不一定关闭所有连接)。 在tomcat7中有可能使用SSLSessionManager来使SSLSession无效,所以我在猜测,tomcat6也可能有类似的东西。

所以整个工作流程将是

  1. 第一次点击index.jsp
  2. 我被要求选择浏览器证书
  3. 使用浏览器证书登录
  4. 我点击了注销按钮,该按钮向logout.jsp
  5. 发出ajax请求 logout.jsp中的
  6. 我使普通的HTTPSession无效并将连接头设置为“关闭”
  7. =>这里缺少一些使SSLSession无效的

    1. 如果logout-ajax请求成功,我将被带到index.jsp (现在从第1点重新开始) 只有我第二次没有被要求提供证书,这正是我想要实现的......在你问之前:我不想为了这个而切换到tomcat7 但需要在tomcat-6.0.32
    2. 中完成

      任何真正感激的帮助

1 个答案:

答案 0 :(得分:1)

您必须掌握Tomcat用于创建SSLContext的{​​{1}}。从那里你可以去

SSLServerSocket

但我不认为这是可行的:至少我不知道你是如何从Tomcat获得byte[] sessionID = (byte[])request.getAttribute("javax.servlet.request.ssl_session"); SSLSession session = sslContext.getServerSessionContext().getSession(sessionID); session.invalidate(); 的。