标签: cac

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

我正在寻找一个地方开始学习如何使用java与政府CAC卡接口.

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

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

通过搜索谷歌,我发现了由OpenSSO项目取代的cacard java项目(https://cacard.dev.java.net/).但我似乎无法找到如何使用它连接到卡,从卡读取等的示例代码.

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

谢谢

编辑:

在研究了更多之后,我在想,我能够只clientAuth="true"server.xml文件中的连接器元素中设置吗?

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

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

java smartcard cac

27
推荐指数
2
解决办法
4万
查看次数

按需读取智能卡

我正在创建一个应用程序,用户可以在其中看到登录页面,输入他的电子邮件地址和密码.那时我希望系统读取他的CAC证书并允许他选择.现在我所能做的只是要求SSL,并在用户登录之前要求提供证书.有什么办法可以做到这一点吗?我在本地使用VS 2015测试它并更改applicationhost.config文件.我不确定它在这一点上如何在服务器上以不同的方式运行.基本上,我想在需要时向用户索取证书,而不是之前.

我发现了一些数据,但它仍无法在服务器上运行.我将服务器上的SSL设置更改为不需要SSL并忽略.然后我将其添加到我的web.config文件中:

 <location path="FileSharing/Index" allowOverride="true">
<system.webServer>
  <security>
    <access sslFlags="Ssl,SslNegotiateCert,SslRequireCert"/>
  </security>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

有了这个我得到500错误,浏览器正试图去:

https://开头的服务器/文件共享/文件共享/索引

FileSharing在地址中的两次.有任何想法吗?

第一页,只是一个欢迎页面,不需要SSL,但是我希望它在转到索引时读取证书.

c# ssl cac

13
推荐指数
1
解决办法
362
查看次数

DOD通用访问卡(CAC)身份验证

我已经找到了在Apache中使用基于DOD CAC卡的客户端证书身份验证的所有必要步骤,但现在我正在努力从我收到的证书中为用户提供良好的GUID.证书上是否有可用的GUID,在更新CAC卡时不会更改?我正在考虑使用SSL_CLIENT_S_DN,它看起来像:

/ C = US/O =美国政府/ OU = DoD/OU = PKI/OU =承包商/ CN = LAST_NAME.FIRST_NAME.MIDDLE_NAME.0123456789

但是我听说CAC卡更新时最后的数字会发生变化.这是真的?是否有更好的信息用于GUID?我也想获取用户的电子邮件地址,但我在证书中收到的信息中看不到它.电子邮件地址是否在我看不到的某些自定义扩展程序中可用?

谢谢!

pki mod-ssl x509certificate2 cac

11
推荐指数
4
解决办法
2万
查看次数

配置Tomcat以接受DOD CAC卡证书

我正在Windows机器上的独立tomcat 6服务器上运行应用程序.我希望它能够从DoD CAC卡请求和接收客户端证书.

我有一台运行IE的客户机正确设置从CAC卡传递证书,我知道它是正确的,因为当我去CAC启用的网站时,IE会弹出一个窗口,要求我选择一个证书,在那个窗口我看到来自我的CAC卡的证书.

我有tomcat配置为从用户请求证书,当我导航到我在tomcat上运行的站点时,我看到同样的IE提示要求我选择我的证书,但是当我查看我的站点时,证书列表是空的.在我的server.xml文件中,我已经配置了我的连接器,如下所示:

<Connector port="8443" 
           protocol="HTTP/1.1" 
           SSLEnabled="true"
           maxThreads="150" 
           scheme="https" 
           secure="true"
           keystoreFile="<myKeysotre>"
           keystorePass="<myPassword>"
           clientAuth="want" 
           sslProtocol="TLS" />
Run Code Online (Sandbox Code Playgroud)

我认为我搞砸的地方是生成密钥库文件.现在我使用java keytool命令生成它,如下所示:

keytool -genkey -alias -keypass myPassword -keystore myKeystore -storepass myPassword

我正在进行开发,我正在寻找一种方法来将CAC卡的客户端证书提供给我的应用程序,但我遗漏了一些东西.我不太熟悉它是如何工作的所以我可以使用一些帮助/指导.

谢谢

ssl tomcat certificate cac common-access-card

10
推荐指数
1
解决办法
8687
查看次数

CAC智能卡重新认证

我们有一个基于浏览器的应用程序,我们希望用户在输入时重新进行身份验证.因此,当他们访问该URL时,我们希望他们显示PIN提示,以便他们重新进行身份验证.有合理的方法吗?

添加信息:这是一张CAC卡,工作站上有ActivIdentity和Tumbleweed.此外,如有必要,我可以向工作站添加服务.浏览器都是IE7.Web服务器是IIS 6,页面是用ASP.NET编写的(大多数情况下).

security authentication smartcard cac

9
推荐指数
2
解决办法
1万
查看次数

如何使用通用访问卡连接到HTTPS服务器

我需要编写一个java程序来连接到HTTPS服务器(DoD网站).该网站需要CAC(DoD通用访问卡)身份验证.如果您通过浏览器访问此站点,则先插入CAC,然后输入PIN.

我需要在java中以编程方式完成身份验证过程(有点像浏览器).如何从CAC检索信息?我一直在谷歌上搜索Java PKCS#11参考指南.看起来像Sun PKCS#11 Provider可以做到这一点,但您需要本机PKCS#11令牌实现.

我对吗?有没有人这样做过?任何建议或评论将不胜感激.

java security jaas cac

8
推荐指数
1
解决办法
6317
查看次数

通过DOD PKI CAC进行Apache身份验证

如何使用Department of Defense CAC卡实现Apache(在Linux内)身份验证?我听说它可以完成,但没有遇到任何细节.目前我们使用Windows Active Directory进行Apache身份验证,但仅使用登录/密码.很快,要求将只使用CAC卡.任何提示将不胜感激.

apache pki cac

6
推荐指数
1
解决办法
8197
查看次数

DoD CAC身份验证 - 使用.NET C#,Windows Server 2008 R2,IIS 7.5的客户端证书问题

我们为DoD开发了一个.NET C#Web应用程序,它使用CAC(通用访问卡)作为唯一的身份验证方法.我们在服务器上有一个受信任的SSL,应用程序在几个位置运行,并且一切正常 - 在大多数情况下.

问题#1

主要问题是,在我们的某些内部开发服务器上,当您使用读卡器中的有效CAC进行"登录"时,只显示一个证书,而不是来自CAC.它用于通过网络验证我的工作笔记本电脑("客户端身份验证"和"智能卡登录"属性在"证书"管理单元中进行检查).

我们在另一个网络上有另一台服务器,其中客户端证书身份验证运行良好 - 它显示来自CAC的证书,并且不显示上述证书.我已经尝试在这两台服务器上并排比较Windows Server 2008 R2中我能想到的一切,看看我是否能找到可能不同的东西,但它们似乎都是Windows Server 2008的默认安装R2.

以下代码用于读取客户端证书:

if (Request.ClientCertificate.IsPresent)
{
    HttpClientCertificate Cert = HttpContext.Current.Request.ClientCertificate;
    //use cert info to check db and create session
}
Run Code Online (Sandbox Code Playgroud)

此文件位于IIS> SSL设置>"要求SSL"和"需要客户端证书"的目录中.

我不知道这是服务器配置问题还是编码问题,但是我已经开展了几个月的工作,并且无法找到答案为什么应用程序只有在托管一些CAC证书时才能获得CAC证书服务器.

问题#2

如果我在正确读取CAC的服务器上访问应用程序,它会从用于访问该计算机上的应用程序的所有CAC中提取所有证书的副本,而不是仅从读卡器中的CAC证书中获取证书.

AKO [https://akologin.us.army.mil/]至少过滤掉电子邮件证书; 但是,该站点不托管在Windows机器上.

结论

在我看来,除了Request.ClientCertificate集合和IIS中的两个复选框之外,还必须有一个更好,更深入的机制来访问和过滤来自智能卡读卡器的客户端证书.

.net windows iis client-certificates cac

6
推荐指数
2
解决办法
5209
查看次数

Python中的CAC客户端应用程序身份验证

我正在构建一个python应用程序,以从网站中提取数据。该应用程序必须使用CAC卡和密码进行身份验证(HTTPS / SSL)才能发出请求。

我的假设是正确的,即您无法从CAC卡中检索私钥,因此使用像PyKCS这样的PKCS#11包装器卡住了吗?

有任何提示或资源可以解决此问题吗?

python smartcard pkcs#11 cac

5
推荐指数
1
解决办法
3978
查看次数

使用美国军事通用访问卡(CAC)个人身份验证(PIV)在Drupal中进行身份验证

我要求使用军用通用访问卡/个人识别验证系统启用登录到新的Drupal供电站点.

我遇到过这个模块:http://drupal.org/sandbox/larquin/1292622但是没有代码.

是否有适用于Drupal的模块?如果没有,有没有人知道任何PHP(或任何其他语言)示例代码,我可以看看基于模块?

或者,是否有另一种方法来支持这种不需要专用模块的身份验证方法?(例如ActiveDirectory?Apache配置?等)

php authentication cac drupal-modules

5
推荐指数
1
解决办法
1490
查看次数