我有一个从X509Store检索到的X509Certificate2对象。我想获得此证书的颁发者,但是此对象提供的仅有的两个属性是X509Certificate2.Issuer和X509Certificate2.IssuerName,其中.Issuer
会误导性,因为它会还原基本上是颁发者名称的字符串。
这两个属性最多都可以返回Distinguished Name,但是DN不是唯一的,对不对?因此,我不想将X509Certificate2Collection.Find方法与X509FindType.FindByIssuerDistinguishedName标志一起使用。
如何获得证书的颁发者,并确保我拥有“正确的证书”。注意:我不必使用X509Certificate2对象。欢迎其他选择。
最佳答案
如果我对您的理解正确,则您具有证书,并且想要查找颁发者证书。可以按照以下步骤进行操作:
X509Chain
对象无效,并将叶子证书传递给X509Chain.Build
方法。检查ChainElements
属性(一个集合),索引1处的元素是颁发者。using System.Security.Cryptography.X509Certificates;
namespace Name {
class Class1 {
public static X509Certificate2 GetIssuer(X509Certificate2 leafCert) {
if (leafCert.Subject == leafCert.Issuer) { return leafCert; }
X509Chain chain = new X509Chain();
chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;
chain.Build(leafCert);
X509Certificate2 issuer = null;
if (chain.ChainElements.Count > 1) {
issuer = chain.ChainElements[1].Certificate;
}
chain.Reset();
return issuer;
}
}
}
关于c# - 检索X509Certificate2对象的颁发者,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33218962/