插入智能卡时,Internet Explorer更新证书存储区

时间:2014-08-28 07:17:30

标签: internet-explorer tomcat ssl browser-cache client-certificates

我在使用tomcat的java web应用程序中遇到智能卡身份验证问题。问题似乎与Internet Explorer(我们的组织使用版本8)以及它如何在Windows中读取个人证书存储区有关。

  1. 如果服务器收到客户端证书,它会从中读取属于该用户的唯一ID,并与数据库进行比较,如果它是用户登录的正确ID。
  2. 如果没有收到任何客户端证书,则会向用户显示一条消息,要求他/她将智能卡插入阅读器。
  3. 客户端计算机上有一个与读卡器通信的应用程序和一个与应用程序通信的浏览器插件。可以使用javascript控制浏览器插件,因此当用户插入卡时,会显示PIN的提示,并且具有用户私钥的卡上的证书将被插入到Windows中的个人存储中。
  4. 在用户插入PIN后,网页重新加载,现在IE应该能够在服务器请求时识别个人存储中的客户端证书,但这不会发生。
  5. 目前我有一些javascript代码一直刷新页面,直到IE读取客户端证书,这确实发生在1-30刷新之间,虽然它是一个丑陋的解决方案,但用户可以接受少量刷新但是很高的数字不是。看起来好像IE不直接从Windows证书库读取证书,而是在特定的时间间隔内将它们缓存在自己的商店中(刷新量取决于相对于间隔发生登录的时间),因为如果我转到IE选项并且到“内容”选项卡并查看我的个人商店我可以在插入卡后立即看到证书(即使IE无法找到它们用于服务器请求)。

    如果我在同一选项卡中按“清除SSL状态”按钮,则IE立即可以读取客户端证书并将其传递给服务器。有一个javascript命令:

    document.execCommand('ClearAuthenticationCache'); 
    

    这应该做同样的事情,但它只是清空缓存,它不会使IE在调用时能够读取客户端证书。

    如果我们无法正常工作,唯一的解决方案似乎是要求用户插入卡并重新启动整个浏览器。完成此操作后,客户端证书将始终传递到服务器。

    有人认识到这个问题吗?

0 个答案:

没有答案