CAC卡和“通用”智能卡有什么区别?

4
我们正在尝试使我们的富客户端C++ Windows应用程序能够利用DoD CAC卡。我们使用第三方库来保护我们的客户端/服务器通信,使用SSL,并且它可以识别/处理普通智能卡,但只有在证书是由其自己打包的应用程序创建时才能处理。
为什么呢?证书不就是证书吗?它们有什么不同?
具体来说,有人能指导我查找简明的技术文档,解释相关标准所要求的内容以及实现定义的内容吗?我已经尝试查看了实际规格,但它们过于详细,而我发现有些模糊的文章并不能回答我的问题。我正在寻找介于两者之间的内容。

他们可能是在说他们拥有自己的 CA(数字证书授权中心)?换句话说,证书可以被读取,但只有在你的机器上信任供应商的证书时才可信。 - Jay
2个回答

2

我没有足够的点来评论,但我想同意@Jay的观点。您可能需要配置此第三方库以信任DoD根证书,以便当CAC用户提交其客户端证书时,您的应用程序可以信任它。

DoD根证书是公开可用的: http://dodpki.c3pki.chamb.disa.mil/rootca.html

如果您观察到的行为是客户端甚至未被提示选择客户端证书,或者在数据包跟踪中未观察到客户端证书的发送,则这也可能是因为您的服务器不信任DoD CA。当一个行为良好的服务器请求客户端证书时,它还会广告它信任的CA的专有名称(dn)。一个行为良好的客户端将检查该列表,并将那些名称与其可用的客户端证书的颁发者进行比较。如果没有匹配项,则客户端将发送“null”证书。我知道IIS/Apache和Firefox/IE/Chrome都是这样做的。然而,Opera似乎不会根据广告的发行者进行区分,并将发送客户端拥有的任何证书。


0
  • 证书就是证书。证书通常是由CA创建的,而不是智能卡供应商个性化软件创建的。使用智能卡时,访问密钥才是最重要的。
  • 把智能卡想象成CD。它们看起来都一样,但你需要知道磁盘上的格式。是的,有一个“通用”格式可以被大多数计算机读取,但有些特殊的软件可以在磁盘上写入特殊的内容,而其他软件则无法读取。

最后但并非最不重要的是,如果您的软件使用PKCS#11,那么只要您有一个适用于您的卡的PKCS#11提供程序(有几个CAC模块和“通用”供应商卡通常也带有一个),您就不需要关心实际的卡,因为PKCS#11会将细节抽象出来。


我们的组件提供商(显然使用PKCS#11)告诉我们,他们不支持由“其他”提供商创建的证书。也许这是一个单独的问题...但我们仍然需要了解这应该如何工作。您能指向任何在线文档吗? - Seb Rose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接