是否可以从 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();
我正在通过 .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();