gpt4 book ai didi

c# - 如何从 .NET 中的 X509Certificate2 中提取 AuthorityKeyIdentifier

转载 作者:太空狗 更新时间:2023-10-30 00:26:15 25 4
gpt4 key购买 nike

我正在寻找一种从 X509Certificate2 实例中提取 AuthorityKeyIdentifier 扩展的方法。我没有看到对此有任何内置支持,但由于 Windows 可以正确构建证书链,我知道该功能必须在某种程度上存在。如果答案是roll一个DER解析器,有没有好的实现可以引用?

最佳答案

遍历 X509Certificate2.Extensions 属性中的扩展并查找 OID 为 2.5.29.35 的扩展(根据 http://www.alvestrand.no/objectid/2.5.29.35.html )。那是 AuthorityKeyIdentifier 扩展。

[编辑:添加了以下内容。]

Extensions 属性的每个成员都是 ASN 编码的。因此,您可以执行以下操作以获取人类可读或机器可解析的格式:

using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

...

X509Extension extension; // The OID 2.5.29.35 extension
AsnEncodedData asndata = new AsnEncodedData(extension.Oid, extension.RawData);
Console.WriteLine(asndata.Format(true));

对于其中一个 Microsoft 中间 CA 证书,Format() 方法返回以下内容:

[1]Authority Info Access
Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2)
Alternative Name:
URL=http://www.microsoft.com/pki/certs/MicrosoftRootCert.crt

这当然不容易解析,但您可以查找以正则表达式 \[\d+\]Authority Info Access 开头的行,然后在其下方找到以正则表达式 开头的行>URL=(.+)(八个空格格式不清楚),使用括号内的URL。

关于c# - 如何从 .NET 中的 X509Certificate2 中提取 AuthorityKeyIdentifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12147986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com