2012-05-07 132 views
12

我有一个使用SSL证书认证的网站。 如何强制Web浏览器从服务器再次询问要使用的证书? 它可以用于注销,但这里的用例是切换用户身份。https客户端证书注销/ relogin

我记得关于如何将用户导向到与当前认证证书不兼容的ssl设置但找不到正确设置的页面。

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

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

对于Firefox,javascript:window.crypto.logout();确实可以处理轻微的用户不便(我相信这可能会被脚本化)。

+0

最简单的方法就是重新启动Web浏览器。 – Robert

回答

6

这在一般情况下是非常困难的(当然也是大多数用户对客户端证书使用情况乏味的原因之一)。

从客户端来看,有一些JavaScript技术,但它们并不全面支持(请参阅this question)。

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

我不知道有任何钩子可以让你用Apache Httpd(和mod_ssl)做到这一点。在Apache Httpd后面可用的机制(例如mod_php,CGI,FCGI,...)通常无法更改由mod_ssl设置的任何设置或环境变量,这将会使会话无效。

在IIS上,this question仍未得到答复。

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

+0

Firefox是否有这样的插件? –

+0

我发现[ClearSslCache](https://addons.mozilla.org/en-US/firefox/addon/clearsslcache),它与清除所有历史记录/活动登录相同,点击次数少(单击新的工具栏按钮,然后确认(西班牙语)“你确定?”对话框) –

1

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

在firefox(版本20之前)你可以这样做: 工具|开始私密浏览。

然后访问有问题的页面。或然后执行“工具|停止私人浏览”,然后...

然后,当你重新加载页面,你是它会提示你提出一个新的客户端证书(如果你有一个以上的来自CA你的服务器信任)。另外,如果您只有一个证书,它将使用您的商店中唯一且唯一一个PKI客户端证书。