我们正在努力使我们的富客户端C++应用程序能够使用DoD CAC卡。
我们使用第三方库来使用SSL保护客户机/服务器通信,它识别/处理通用智能卡,但只有在证书是由自己的捆绑应用程序创建的情况下。
为什么?证书不是证书吗?它们是如何变化的?
具体而言,有人能向我指出浓缩的技术文件吗?这些文件解释了相关标准所规定的内容以及定义的执行情况。我试着看了实际的规格,但它们太详细了,我发现非常模糊的文章,没有回答我的问题。我在找中间的东西。
发布于 2010-09-28 05:16:33
我没有足够的评论,但我想同意@Jay。您可能需要配置这个第三方库来信任DoD根证书,这样当CAC用户显示他的客户端证书时,您的应用程序就可以信任它。
DoD根证书可公开使用:http://dodpki.c3pki.chamb.disa.mil/rootca.html
另外,如果您所观察到的行为是客户端甚至没有被提示选择客户端证书,或者您没有观察到在数据包跟踪中发送的客户端证书,那么这也可能是因为您的服务器不信任DoD CA。当行为良好的服务器请求客户端证书时,它还会公告它信任的CA的可分辨名称(Dn)。一个行为良好的客户端将检查该列表,并比较这些名称,即它所拥有的cleint证书的颁发者。如果没有匹配,那么客户端将发送一个"null“证书。我知道IIS/Apache和Firefox/IE/Chrome的行为方式。然而,Opera似乎没有基于广告发行者的歧视,并将发送客户所拥有的任何证书。
发布于 2010-08-11 05:11:44
最后但并非最不重要的一点是,如果您的软件使用了PKCS#11,那么只要您有一个PKCS#11提供程序(您的卡上有几个CAC模块,“通用”供应商卡通常也附带一个),您就不需要关心实际的卡了,因为PKCS#11抽象了详细信息。
https://stackoverflow.com/questions/3449153
复制相似问题