是否可以从 CertificateAuthority Store 检索 CA 证书

Is It Possible to Retrieve a CA Certificate from CertificateAuthority Store

我正在通过 .NET API 处理 X509 证书,想知道是否可以从 CertificateAuthority Store 检索 CA 证书。我尝试了很多排列,最有意义(但也失败)的排列是:

var store = new X509Store(StoreName.CertificateAuthority, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var count = store.Certificates.Find(X509FindType.FindBySubjectDistinguishedName, "CN=SecureTrust CA", false).Count;
store.Close();

returns 计数 0

如评论中所述,您需要使用 Root 而不是 CertificateAuthority。另外,如果您使用 FindBySubjectDistinguishedName,则必须使用完整的 DN。

这个有效:

var store = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var count = store.Certificates.Find(X509FindType.FindBySubjectDistinguishedName, 
      "CN=SecureTrust CA, O=SecureTrust Corporation, C=US", false).Count;
store.Close();

或者使用不太严格的 FindBySubjectName:

var store = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var count = store.Certificates.Find(X509FindType.FindBySubjectName, 
                                    "SecureTrust CA", false).Count;
store.Close();