使用 Java 的通用访问卡 (CAC) 身份验证

2024-06-10

我基本上是在寻找一个地方来开始学习如何使用 java 与政府 CAC 卡交互。

最终,我的目标是了解如何使用 CAC 卡身份验证(通过 PIN 码)来授权访问使用 Tomcat/J2EE 服务器托管的网站。

但我需要从某个地方开始。所以我想我首先要编写一个小的java程序来简单地从插入我键盘上的读卡器的CAC卡中读取CAC卡信息(DELL键盘,数字键盘上方有CAC读卡器)。

通过谷歌搜索,我找到了cacardjava项目(https://cacard.dev.java.net/ https://cacard.dev.java.net/)被替换为OpenSSO项目。但我似乎找不到如何使用它连接到卡、从卡读取数据等的示例代码。

有谁知道我在哪里可以找到一些示例代码,以便我可以开始学习如何使用 java 与 CAC 卡交互?

Thanks

EDIT:

经过更多研究后,我在想,我是否可以设置clientAuth="true"在连接器元件中server.xml file?

http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html

clientAuth:如果您希望 Tomcat 要求所有 SSL 客户端提供客户端证书才能使用此套接字,请将此值设置为 true。


您是在创建 Web 应用程序,还是尝试编写在客户端运行的软件(有点像您自己的 Web 浏览器)?

如果您正在创建一个 Web 应用程序,那么它几乎只是标准的客户端认证身份验证。证书来自硬件令牌这一事实对于服务器来说并没有太大改变;如果你想接受onlyCAC 证书,您可以在服务器验证客户端证书时指定一组可接受的证书策略。 (策略验证是 PKIX 验证的标准部分。)如果此应用程序面向政府客户,您需要与他们的安全团队密切合作,以确保您的解决方案满足他们的要求,这些要求可能很严格。如果这是您的情况,请告诉我,我将用我们遇到的一些问题更新我的答案。

如果您正在编写客户端,并且需要访问物理读取器,您可以使用Sun PKCS #11 提供商 http://java.sun.com/j2se/1.5.0/docs/guide/security/p11guide.html,从 Java 1.5 开始。我已经尝试过这个提供程序,您可以阅读有关它的更多信息另一个答案。 https://stackoverflow.com/questions/752890/how-to-connect-to-https-server-using-common-access-card/753129#753129


在服务器上,您应该检查证书是否未被吊销。然而,其中一些 CRL 是enormous— 我们有超过 100 Mb 的 CRL 文件,而内置的 Sun 吊销检查器无法很好地扩展到这个大小。

您还需要确保 Tomcat 的“信任”密钥存储中拥有正确的根 CA 证书(政府根 CA 证书不太难找到,因为他们希望确保用户正确验证它们)。我们还发现,除非用户手动将中间证书导入浏览器,否则 Firefox 不会发送整个证书链。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Java 的通用访问卡 (CAC) 身份验证 的相关文章

随机推荐