1

我看到在 stackoverflow 上还有一些其他的 Java 和 CAC 帖子。我是所有这些东西的初学者,我仍在尝试制定一个框架,让我知道该做什么以及该去哪里。

我正在为一个大型组织工作,该组织使用带有 Windows 7 框的 CAC 来验证想要进入其 PC 的用户。他们将 CAC 插入键盘并输入 PIN。

我的老板想改变我们的 Java Webap,这样如果他们的计算机中有 CAC,它就不会让用户进行身份验证。如果没有,他们将通过传统的 LDAP 登录。

我们正在使用 WebLogic 11g 和 Java 6。

从谷歌搜索似乎有两种方法:

  1. 实现一个小程序来读取用户的 CAC 并向 webapp 发送 SSL 证书。

  2. 在 web 服务器中实现“相互 SSL 认证”,这会导致浏览器将 CAC 上的 SSL 证书发送到 webapp

我对自己的选择有正确的评估吗?

哪种解决方案更容易?

从长远来看,哪个更容易,更强大?

我对 SSL 几乎一无所知,这在两种解决方案中似乎都很常见。我发现了一些关于抽象概念的 SSL 教程。谁能推荐一个我想做的好教程?

非常感谢您提供任何信息或提示

史蒂夫

4

1 回答 1

5
  1. 实现一个小程序来读取用户的 CAC 并向 webapp 发送 SSL 证书。

  2. 在 web 服务器中实现“相互 SSL 认证”,这会导致浏览器将 CAC 上的 SSL 证书发送到 webapp

你会想做#2。您真的不想弄乱智能卡硬件/软件。让操作系统完成所有这些工作。

我已经在 IIS 上完成了这项工作,但一般来说,要实现这一点,您需要将 Web 服务器配置为需要客户端证书并信任 DoD CA。您可能需要配置您的 Web 服务器以向客户端通告它信任的 CA。如果 Win7 客户端具有由您信任的 CA 签名的客户端证书,则客户端将尝试使用它。如果是智能卡证书,Windows 会自动提示用户输入密码;你不必担心。如果用户键入正确的密码,证书将被发送到您的 Web 服务器,然后该服务器应该能够使用 CA 验证证书。如果它是一个有效的证书,那么您的软件可以解析证书中的字段并使用这些值来帮助验证用户(即,尽管有一个有效的证书,用户实际上可以根据他们的姓名/电子邮件地址/等登录)。如何从那里处理它取决于您。

如果您忘记用户正在使用智能卡或 CAC,那么您将更容易弄清楚这一点并查找信息,并且只需从您将使用客户端证书进行身份验证的想法开始。首先创建一个自签名 CA 测试证书。然后为您的网络服务器创建一个服务器证书和一个由您的测试 CA 签名的客户端证书。在客户端和服务器上添加测试 CA 证书作为受信任的根证书。然后尝试编写一个使用客户端证书向您的网络服务器进行身份验证的小型测试应用程序。完成该工作后,您可以添加 DoD CA 并尝试从 CaC 证书中提取信息。

祝你好运!

于 2013-05-17T20:05:13.773 回答