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 客户端证书注销/重新登录的主要内容,如果未能解决你的问题,请参考以下文章

登录浦发手机银行时显示缺少可信证书 登录不上怎么办

浏览历史记录清除网页后注销[重复]

从外部提供者注销后,身份服务器登录流程卡住

如何在 Meteor 中使用客户端重新连接事件

Exchange2016多租户方式单SSL证书登录外部客户端登录

Exchange2016多租户方式单SSL证书登录内部客户端登录测试效果