【问题标题】:how to get X509Certificate using Friendly Name rather than Thumbprint?如何使用友好名称而不是指纹获取 X509Certificate?
【发布时间】:2020-04-23 16:35:53
【问题描述】:

我有一个具有友好名称的证书,我想使用友好名称而不是指纹来获取证书。我没有看到像FindByFriendlyName... 这样的方法,怎么办?

 var thumbprint ="f454......"
 var friendlyName = "ASP.NET Core...."    

 X509Certificate2Collection signingCerts = store.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false);
            X509Certificate2Enumerator enumerator = signingCerts.GetEnumerator();

【问题讨论】:

    标签: c# x509certificate


    【解决方案1】:

    内置搜索只能针对静态字段进行,对于任何给定的证书都不会更改。友好名称不是静态的,它可以为任何单个证书无限次更改。因此,我强烈建议不要依赖证书友好名称。永远。

    您可以通过枚举所有证书并检查匹配的证书来进行手动过滤,但这是非常糟糕和脆弱的方式。

    【讨论】:

    • 好的。知道了。感谢您的回答!
    • 这似乎有点极端。在实践中,友好名称不会更改,除非有人更改它们,这种情况很少见,并且可能表明证书的权限过于宽松。
    【解决方案2】:

    如果您想要在证书续订期间具有稳定搜索值且易于阅读的内容,您可以尝试使用主题名称(如果证书有一个不错的主题名称,而不是 localhost 或其他名称):

    var subject ="org name signing cert......"
    var friendlyName = "ASP.NET Core...."    
    
    X509Certificate2Collection signingCerts = store.Certificates.Find(X509FindType.FindBySubjectName, subject, true);
            X509Certificate2Enumerator enumerator = signingCerts.GetEnumerator();
    

    (您可能也只需要有效/未过期的证书,因此请使用true 作为最后一个参数。)

    【讨论】:

      【解决方案3】:

      我有一个通过 FriendlyName 查找的用例。代码如下

                  //store variable 
                  X509Store store;
                  //certificate variable 
                  X509Certificate2 cert;
      
                  //init store using root and local machine
                  store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
                  //open store for read only
                  store.Open(OpenFlags.ReadOnly);
                  //find cert using linq
                  cert = store.Certificates.OfType<X509Certificate2>().FirstOrDefault(x => x.FriendlyName == "cert-friendlyname-here");
                  //close store
                  store.Close();
      

      【讨论】:

        猜你喜欢
        • 2017-08-15
        • 1970-01-01
        • 1970-01-01
        • 2018-08-31
        • 2017-10-23
        • 1970-01-01
        • 2019-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多