如何获取数字证书X509Certificate2的名称

时间:2014-04-24 11:27:45

标签: c# asp.net .net vb.net x509certificate2

我正在使用C#中的数字证书X509Certificate2,并且在找不到具有友好名称的证书名称时遇到问题。

我的软件使用客户端计算机中的所有证书构建一个组合框。

在我的cenario中,我的一个客户端无法手动为证书配置友好名称,因此我设法从SubjectName获取名称(打破字符串并获取以&#34开头的那个; CN =&# 34。)

但是有了一些证书,这种方法效果不好,我想知道是否有更优雅的方式来获取友好名称(如果存在),如果不存在,则获取真实证书的名称。< / p>

此外,我希望从商店获取有效证书列表,不包括未用于数字签名的根证书。

1 个答案:

答案 0 :(得分:1)

为了仅加载用于执行数字签名的证书(避免仅使用公共部分的CA和证书),您可以使用:

X509Store store = new X509Store("My");

指定仅加载“我的”:个人证书的X.509证书存储区。

您可以看到所有选项here,也可以使用StoreLocation.CurrentUser,但我认为“我的”就是您要找的。

关于证书名称,您可以使用X509Certificate2属性:

如果FriendlyName属性为null或为空,则可以使用SubjectName属性。在两个属性都不起作用的情况下,您最后有机会使用SerialNumber属性,SerialNumber不能用于识别证书,但是对于证书颁发者,SerialNumber必须是唯一的,以便您可以使用此属性识别证书。

希望这有帮助,