gpt4 book ai didi

java - Tomcat/JBoss 删除 SSL 并强制进行新的握手

转载 作者:行者123 更新时间:2023-11-28 22:45:27 30 4
gpt4 key购买 nike

有谁知道如何从用户 session 中删除 SSL 证书并强制再次完成 SSL 握手?

我试过通过调用删除证书

request.removeAttribute("javax.servlet.request.X509Certificate");

但这似乎并不能解决问题。事实上,代码似乎忽略了该属性。

最佳答案

获取证书的代码最终调用org.apache.tomcat.util.net.jsse.JSSESupport.getPeerCertificateChain(...) .但是,仅当证书尚未与 session 关联时才会触发重新协商:

if(jsseCerts.length <= 0 && force) {
session.invalidate();
handShake();
session = ssl.getSession();
}

因此,由于您已经拥有带有 SSLSession 的证书(并且由于从请求中删除该属性对此没有任何影响),您将无法触发重新协商那会让你忘记那个证书。

您可能会发现需要修补 Tomcat 中各种类(调用 getPeerCertificateChain)的实现来实现此目的。如果您想执行“SSL 注销”(类似),这就是您需要做的。您可以使用 Connection: close HTTP header 要求客户端关闭连接(从而创建一个无需客户端证书即可协商的新连接)。但是,由于通常由关闭方发送它,因此不能保证接收方(客户端)会关闭它(而且,据我所知,Servlet 规范和 Tomcat 实现中都没有任何内容,允许使用强制关闭连接)。

关于java - Tomcat/JBoss 删除 SSL 并强制进行新的握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6683473/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com