Mik*_*ike 4 .net c# certificate x509certificate
我有一个从X509Store检索到的X509Certificate2对象。我想获取此证书的颁发者,但此对象提供的仅有的两个属性是X509Certificate2.Issuer和X509Certificate2.IssuerName,.Issuer因为它会还原基本上是颁发者名称的字符串,因此有点误导。
这两个属性最多都可以返回专有名称,但是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;
}
}
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2873 次 |
| 最近记录: |