17

我有一个使用 ssl 证书身份验证的网站。如何强制服务器上的网络浏览器再次询问要使用的证书?它可用于注销,但这里的用例是切换用户身份。

我记得一些关于将用户引导到 ssl 设置与当前身份验证证书不兼容但找不到正确设置的页面。

我的设置使用 apache mod-ssl,但也欢迎使用 IIS 解决方案。

更新:我特别询问服务器端:如何在需要客户端证书但拒绝所有证书的同一主机名上设置 URL。

对于 Firefox,javascript:window.crypto.logout();确实会为用户带来轻微的不便(我相信可以编写脚本)。

4

3 回答 3

9

这通常是相当困难的(当然也是大多数用户使用客户端证书可能很乏味的原因之一)。

从客户端来看,有一些 JavaScript 技术,但它们并未得到全面支持(请参阅此问题)。

使用 Apache Tomcat 7,您可以使用请求属性使 SSL/TLS 会话无效,如本问题中所述。

我不知道有任何钩子可以让您使用 Apache Httpd(和mod_ssl)执行此操作。Apache Httpd 背后可用的机制(例如mod_php,CGI、FCGI、...)通常无法更改由 设置的任何设置或环境变量mod_ssl,这对于使会话无效是必要的。

在 IIS 上,这个问题仍然没有答案。

从浏览器的角度来看,一般的方法是进入其设置并清除 SSL 状态(这取决于浏览器,但通常至少需要几个对话框,而不仅仅是一个快速按钮,至少不需要没有插件)。

于 2012-05-07T18:53:55.003 回答
1

从客户端 Web 浏览器中,您可以为 MSIE(Internet Explorer)执行此操作:通过转到工具>Internet 选项>内容(选项卡)>清除 SSL 状态来清除 SSL 状态。

在 Firefox(20 版之前)中,您可以执行以下操作:工具 | 开始隐私浏览。

然后访问相关页面。或者然后执行“工具|停止隐私浏览”然后...

然后,当您重新加载您所在的页面时,它会提示您提供新的客户端证书(如果您有多个来自服务器信任的 CA 的证书)。否则,如果您只有一个证书,它将使用您商店中的唯一一个 PKI 客户端证书。

于 2014-06-04T14:45:06.727 回答
1

对于注销阅读这篇文章:https ://security.stackexchange.com/questions/36853/is-it-possible-to-force-a-new-ssl-session#

在客户端,SSL 会话通常保存在 RAM 中。例如,Internet Explorer 在内部由多个相互通信的进程组成,您必须将它们全部杀死才能使其忘记 SSL 会话(实际上,这仅在您关闭所有 IE 窗口时才会发生)。

另一种方法是使用 javascript 关闭浏览器。

于 2015-10-07T17:23:36.730 回答