gpt4 book ai didi

spring - 选择 x509 身份验证的客户端证书对话框

转载 作者:行者123 更新时间:2023-12-02 09:41:21 25 4
gpt4 key购买 nike

我有一个用 Java + Spring 编写的应用程序,在 Wildfly 10 上运行。我已经使用我的 RootCA 和客户端证书设置了基本的 x509 身份验证。

基于客户端的证书CN,我可以处理多个用户角色。

我想实现的是某种方式,如何动态选择应该使用的客户端证书。访问 https 时会显示一个对话框(这是一个系统对话框 - 来自 Firefox)。但此对话框仅显示一次,即使注销后,该对话框也不会再次显示,并且会自动选择最后一个客户端证书。

即使我取消选择记住此决定,也会再次选择此证书。

这里拒绝上传截图,所以有url:/image/S3NbP.jpg

最佳答案

TL;DR:(目前)没有可靠的方法可以从服务器端使用新的客户端证书强制重新进行身份验证,但是,在大多数情况下,可以由用户手动完成。

正如我列出的错误中提到的 earlier ,出现此行为是因为 Firefox 和 Chrome 记住了 SSL 状态,其中包括用于身份验证的任何客户端证书。用户可以通过重新启动浏览器来手动清除此缓存,或 clearing active logins 。虽然仍然没有方法可以远程触发清除浏览器的 SSL 缓存,但已经有几种创造性的方法来解决这个问题。

强制浏览器再次请求客户端证书的一种方法是强制 TLS renegotiation ,这将涉及再次交换 TLS Client HelloServer Hello 消息。例如,here当用户请求需要客户端证书的资源时,Apache 使用 TLS 重新协商来“升级”连接。

由于我对 Spring 框架不熟悉,我不知道在您的具体情况下这将如何完成,但是,我相当确定它可以在 Java 中完成。您可以看一下 TLS 1.2 RFC Hello Request 部分消息,这将提示客户端响应 Client Hello 消息,从而有效地重新启动握手。

然而,此时,如果客户端已经使用证书进行了身份验证,浏览器仍然会记住并发送它。服务器可以通过修剪其在其 Certificate Requestcertificate_authorities 部分中发送的接受的 CA 列表来强制客户端提供不同的证书。信息。如果您要使用的新证书与旧证书由同一 CA 颁发,这显然不起作用。

我还看到过使用自定义逻辑在再次提供相同证书时导致 SSL 连接失败的情况,但这并不能解决浏览器的证书内存问题。它只是阻止用户再次使用该站点,直到重新启动或清除事件登录,如上所述。希望有帮助。

关于spring - 选择 x509 身份验证的客户端证书对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46648936/

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