https 客户端证书注销/重新登录
Posted
技术标签:
【中文标题】https 客户端证书注销/重新登录【英文标题】:https client certificate logout/relogin 【发布时间】:2012-05-16 06:19:13 【问题描述】:我有一个使用 ssl 证书身份验证的网站。 如何强制服务器上的网络浏览器再次询问要使用的证书? 它可用于注销,但这里的用例是切换用户身份。
我记得一些关于将用户定向到 ssl 设置与当前身份验证证书不兼容但找不到正确设置的页面。
我的设置使用 apache mod-ssl,但也欢迎使用 IIS 解决方案。
更新: 我特别问服务器端:如何在需要客户端证书但拒绝所有证书的同一主机名上设置 URL。
对于 Firefox,javascript:window.crypto.logout();
确实会为用户带来轻微的不便(我相信可以编写脚本)。
【问题讨论】:
最简单的方法就是重启网络浏览器。 【参考方案1】:这通常是相当困难的(当然这也是大多数用户使用客户端证书可能很乏味的原因之一)。
从客户端来看,有一些 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 状态(这取决于浏览器,但通常至少需要几个对话框,而不仅仅是一个快速按钮,至少不是没有插件)。
【讨论】:
火狐有这样的插件吗? 我发现ClearSslCache 似乎与清除所有历史记录/活动登录相同,只需单击较少(单击新工具栏按钮,然后单击确认(西班牙语)“是你确定?”对话框)【参考方案2】:您可以从客户端 Web 浏览器为 MSIE(Internet Explorer)执行此操作: 通过转到工具>Internet 选项>内容(选项卡)>清除 SSL 状态来清除 SSL 状态。
在 Firefox(20 之前的版本)中,您可以执行以下操作: 工具 |开始隐私浏览。
然后访问相关页面。或者然后执行“工具|停止隐私浏览”然后...
然后,当您重新加载您所在的页面时,它会提示您提供新的客户端证书(如果您有多个来自服务器信任的 CA 的证书)。否则,如果您只有一个证书,它将使用您商店中的唯一一个 PKI 客户端证书。
【讨论】:
【参考方案3】:退出阅读这篇文章:https://security.stackexchange.com/questions/36853/is-it-possible-to-force-a-new-ssl-session#
在客户端,SSL 会话通常保存在 RAM 中。例如,Internet Explorer 在内部由多个相互通信的进程组成,您必须将它们全部杀死才能使其忘记 SSL 会话(实际上,这仅在您关闭所有 IE 窗口时才会发生)。
另一种方法是使用 javascript 关闭浏览器。
【讨论】:
以上是关于https 客户端证书注销/重新登录的主要内容,如果未能解决你的问题,请参考以下文章