有没有办法在用户已经(最近)访问过网站后重新请求客户端 TLS 证书 - 而无需清除历史记录?最好使用 nginx。
nginx 的工作方式ssl_verify_client optional_no_ca
是,在第一次访问时选择无后,浏览器会记住这一点,并且不会再询问 - 事件当 TCP(以及 TLS)连接关闭时(可以强制使用没有保持活动,即使对于某些根也是如此)。
TLS 重新协商已在 TLS.1.3 中禁用,但这 谈论SSL_verify_client_post_handshake
——这能以某种方式被利用吗?
或者这是浏览器历史记录?(即网络服务器可能会做任何事情,而浏览器只会继续做出的选择)
解决方法确实有效但并不理想,因为用户不能直接单击链接:
- 让用户重新启动浏览器(或者在使用 Firefox 的情况下:清除“活动登录”“清除最近历史记录”弹出窗口);
- 对“无证书”站点和“有证书”站点使用不同的来源(即端口或域);
答案1
指令ssl_verify_client
不能在配置的任何较低级别使用,而不是 server
块,因此要使用不同的设置,您需要使用不同的server
块,这也意味着不同的主机名和/或端口。所以你唯一真正的解决方案是,正如你所说的:
对“无证书”站点和“有证书”站点使用不同的来源(即端口或域);