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

时间:2012-05-07 18:33:58

标签: ssl https certificate logout client-certificates

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

我记得有些事情是将用户定向到一个页面,该页面的ssl设置与当前的身份验证证书不兼容,但无法找到正确的设置。

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

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

对于Firefox,javascript:window.crypto.logout();确实可以解决用户的轻微不便(我认为可以编写脚本)。

3 个答案:

答案 0 :(得分: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状态(这取决于浏览器,但通常至少需要几个对话框,而不仅仅是一个快捷按钮,至少没有插件)。

答案 1 :(得分:1)

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

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

然后访问相关页面。或者然后做"工具|停止私密浏览"然后......

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

答案 2 :(得分:0)

要退出,请阅读以下帖子:https://security.stackexchange.com/questions/36853/is-it-possible-to-force-a-new-ssl-session#

  

在客户端,SSL会话通常保存在RAM中。例如,Internet Explorer内部由几个相互通信的进程组成,你必须全部杀掉它们以使它忘记一个SSL会话(实际上,只有当你关闭了所有IE窗口时才会发生这种情况)。 p>

替代方案可以是使用javascript关闭浏览器。