我正在开发一个库,它生成XML数据并签名生成的XML。 我已经安装了一个pkcs12证书(用pem文件中的OpenSSL生成)到Windows证书库中。
我正在用C#代码加载证书
X509Store store = new X509Store(StoreName.My,StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); X509Certificate2 cert = null; foreach (var item in store.Certificates) { if (item.SubjectName.Name.Contains("CN=IDENTIFIER")) { cert = item; break; } } store.Close();
在我的情况下,CN标识符是:我的姓氏+姓氏。 证书来自第三方。 所以我觉得我对标识符没有影响。
问题在于:
访问冲突插入元素到全球地图
与cmake,icc和pthreads(linux)链接
从窗口应用程序开始,用于检索安装在远程PC上的软件和硬件列表
我如何获得作为一个整数在C中的Unix的时间戳?
如何在ring0中使用winapi函数(内核模式)?
有没有什么办法从C#中确切地标识这个证书。 将来有可能多个证书具有相同的X509参数(CN等)。
先谢谢你。
c ++ boost asioasynchronous函数不会在dll中工作
麻烦重新启动exe
getline()直到inputC ++结束
是的,CN可能包含相同的标识符(例如,当为企业实体颁发证书时)。
证书通常由以下组合之一来区分:1)颁发者名称(不是CN,而是RDN,具有多个字段的完整名称记录)+证书序列号(在一个CA内是唯一的)2)颁发者名称+证书哈希
如果您在搜索证书之前不知道颁发者名称,则可以向用户显示找到的证书列表,并且一旦他选择了一个证书,就存储证书散列以备将来参考。
在较小的系统(最终用户的计算机)上,MY商店中的证书数量通常很少,并且散列冲突的可能性很小。 在大型系统上,机会更高,这就是为什么使用Issuer名字的原因。
扩大尤金的答案
X509Store的Certificates属性是一个X509CertificateCollection 。
您可能会对其Find方法和X509FindType 。 它提供了许多方法来搜索证书。 严格地说, 主题DN和主题替代名称都应该重要,以识别与证书相关联的实体。 然而,从呈现的角度来看,很少有工具可以做到这一点(例如,这可能会在表格中非常混乱)。
正如GregS和Eugene指出的那样, 证书指纹(在其他工具中也被称为指纹/散列)将唯一标识特定的证书,而不管其颁发者。 它可以与X509FindType一起使用 。
指纹被用在Windows / .Net / SSL世界的多个地方。 特别的, 这是选择一个安装在HTTPS端口上的指定证书的方法 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。