无法按序列号查找证书

Phu*_*huc 15 c# asp.net x509certificate

我已将证书导入个人 - >证书.

我使用以下代码行按序列号查找我的证书,但我不能:

    public X509Certificate2Collection FindCerts(string serialNumber)
    {
        var searchType = X509FindType.FindBySerialNumber;
        var storeName = "MY";

        var certificatesStore = new X509Store(storeName, StoreLocation.LocalMachine);
        certificatesStore.Open(OpenFlags.OpenExistingOnly);

        var matchingCertificates = certificatesStore.Certificates.Find(searchType, serialNumber, true);

        certificatesStore.Close();

        return matchingCertificates;
    }
Run Code Online (Sandbox Code Playgroud)

你能不能告诉我为什么我找不到我的证书,即使它在certificateStore.Certificates列表中?

注意:我的证书是由Go Daddy创建的

Phu*_*huc 22

我通过输入序列号而不是从属性窗口复制来修复此问题.我不知道为什么从这个窗口复制时,它在序列号的开头包含一个奇怪的字符.

  • 可以确认这个问题.属性窗口中的序列号前面有一个字符.复制到VS时,它不可见,但它在那里. (6认同)

Ste*_*ven 8

由于我也遇到过这个问题,我试图制定一个解决方法,以便能够从certmgr.msc复制粘贴值

我所做的总结:

// The value below is pasted from certmgr.msc
var sslCertificateSerialNumber="?47 9f da c4 ad d7 33 a6 4c ad 54 d3 d9 95 67 1c"; 


// Remove all non allowed characters that entered the value while copy/paste
var rgx = new Regex("[^a-fA-F0-9]");
var serial = rgx.Replace(sslCertificateSerialNumber, string.Empty).ToUpper();
Run Code Online (Sandbox Code Playgroud)

现在我找到了带有复制/粘贴值的正确证书.