HTTPS客户端证书注销/重新登录

17

我有一个使用ssl证书认证的网站。如何强制服务器要求浏览器重新选择要使用的证书呢?这可以用于注销,但这里的用例是切换用户身份。

我记得有一些方法可以将用户引导至具有与当前认证证书不兼容的ssl设置的页面,但找不到正确的设置方法。

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

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

对于Firefox,javascript:window.crypto.logout();可以使用,用户只需做出轻微的不便(我相信可以通过脚本解决)。


最简单的方法就是重新启动网络浏览器。 - Robert
3个回答

9

一般情况下这是相当困难的(这也是为什么客户端证书使用对大多数用户来说很繁琐的原因之一)。

从客户端角度看,有一些JavaScript技术,但它们没有得到广泛支持(请参见这个问题)。

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

我不知道是否有任何钩子能让您在Apache Httpd(和mod_ssl)中这样做。可用于Apache Httpd的机制(例如mod_php,CGI,FCGI等)通常不能够更改由mod_ssl设置的任何设置或环境变量,这是使会话失效所必需的。

在IIS上,这个问题仍未解答。

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


有没有适用于Firefox的这样一个插件? - David Balažic
1
我找到了 ClearSslCache,它似乎能够做到和清除所有历史记录 / 活动登录一样的事情,且比后者多点击一个按钮(先点击新工具栏上的按钮,然后再点击(西班牙语)“你确定吗?”对话框)。 - David Balažic

1

从客户端的Web浏览器中,您可以执行以下操作来清除SSL状态:

对于MSIE(Internet Explorer):

转到“工具”>“Internet选项”>“内容”(选项卡)>“清除SSL状态”。

对于Firefox(20版本之前):

选择“工具”>“开始私人浏览”。

然后访问相关页面。或者选择“工具”>“停止私人浏览”,然后...

这样,当您重新加载当前页面时,它将提示您呈现新的客户端证书(如果您有多个来自服务器信任的CA的证书)。否则,如果您只有一个证书,则会使用存储在您的存储中的唯一一个PKI客户端证书。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接