【问题标题】:How to get the name of a Digital Certificate X509Certificate2如何获取数字证书 X509Certificate2 的名称
【发布时间】:2014-04-28 18:13:04
【问题描述】:

我正在使用 C# 中的数字证书 X509Certificate2,但在没有友好名称的情况下查找证书名称时遇到问题。

我的软件构建了一个组合框,其中包含客户端计算机中存在的所有证书。

在我的场景中,我的一个客户无法手动为证书配置友好名称,因此我设法从 SubjectName 获取名称(打破字符串并获取以“CN =”开头的名称)。

但是对于某些证书,此方法效果不佳,我想知道是否有更优雅的方法来获取友好名称(如果存在),如果没有,则获取真实证书的名称。

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

【问题讨论】:

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


    【解决方案1】:

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

    X509Store store = new X509Store("My");
    

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

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

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

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

    希望这会有所帮助,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 2017-03-23
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      相关资源
      最近更新 更多