【问题标题】:Java Applet for mutual authentication with smart card用于与智能卡进行相互身份验证的 Java Applet
【发布时间】:2012-07-28 17:27:20
【问题描述】:

我需要开发一个 java 小程序,用于 Tomcat 6(服务器)和智能卡“IDGo 300”(客户端)之间的相互身份验证。

为了做到这一点,我想到了以下方案:

  1. Tomcat(服务器)向 SmartCard(客户端)发送其数字证书(由 CA 签名)的请求。
  2. 客户端输入 PIN 并选择智能卡上的可用证书,然后 Applet 将其证书(由 CA 签名)发送到 tomcat。 tomcat 验证数字证书,如果正确则发回他的证书。
  3. 小程序验证服务器的证书,如果证书正确,则向服务器发送确认。
  4. 服务器向客户端提供完全访问权限以使用 Web 应用程序。

我有一些问题:

  1. 这个方案可行吗?
  2. 我想通过我的小程序管理所有内容,当客户端断开智能卡的连接时,他将无法访问服务器。

【问题讨论】:

  • 如果有人在这里搜索智能卡 PKI 身份验证,在 2021 年或之后,可以在web.signer.digital/home 处检查一个选项

标签: applet certificate smartcard mutual-authentication


【解决方案1】:

可行吗?是的。实用吗?不,我会主张使用厚 Java 应用程序。

首先,您不能仅通过发送证书来进行身份验证。您还需要类似质询-响应(输入 PIN 后由智能卡上的私钥创建的签名)。

其次,您需要特殊权限才能使用 Applet 中的任何硬件。这意味着您必须更改客户端的权限,或者您可能必须签署 Applet,之后用户必须接受 Applet 以执行该特定任务。

Applet 有非常具体的生命周期。您可能不想将卡的移除与 Applet 的生命周期同步。当您断开连接时,用户可能会阻止发送的响应。您可以在单独的线程中使用waitForCardAbsent() 测试卡是否已被移除。

如果您不能信任连接(没有 SSL 的 HTTP),那么您就不能信任 Applet 代码。用户可能不想将他们的 PIN 输入到不受信任的代码中。

如果你想支持多个浏览器和 Java 运行时,你会遇到无数的问题。

作为一个小问题,javax.smartcardio 包可能并不总是可用;它不在javax 中。

【讨论】:

  • 所以使用小程序会有安全问题。我看到了 eID 项目,我认为它具有相同的外观。 [链接](code.google.com/p/eid-applet)但我无法根据需要集成他们的身份验证小程序。(我已经为 ssl 2 方式身份验证配置了 tomcat)
  • 我不能对比利时的 eID 小程序发表评论,如果没有进行适当的研究,我也不会评论他们系统的安全性。以上是我自己的经验。
  • 我明白你的意思,但我真的需要在我的 j2ee 应用程序中实现一个使用智能卡进行相互身份验证的解决方案来签署 pdf。但我迷路了。
  • j2ee不用浏览器也能用,真的需要浏览器部分吗?
  • 这是很多工作,需要很多知识,当然还有很多测试。如果在工时你做得对,几个月的时间。我很久以前就创建了这样的解决方案,但那是在业务中长期支持的人的支持下。当下一个项目出现时,我创建了一个概念验证 Java GUI 应用程序,我们就这样做了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多