You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET环境下如何获取X509证书的属性证书信息

你可以通过X509Certificate2实例的Extensions属性获取证书内置的所有属性(扩展)数据,以下是修改后的可直接运行的代码:

X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Test Certificate Select", "Select a certificate from the following list to get information on that certificate", X509SelectionFlag.MultiSelection);

foreach (X509Certificate2 x509 in scollection)
{
    Console.WriteLine("证书名称: {0}{1}", x509.GetNameInfo(X509NameType.SimpleName, true), Environment.NewLine);
    Console.WriteLine("===== 证书属性列表 =====");
    
    // 遍历所有属性(扩展)
    foreach (X509Extension ext in x509.Extensions)
    {
        Console.WriteLine($"属性OID:{ext.Oid.Value}");
        Console.WriteLine($"属性名称:{ext.Oid.FriendlyName}");
        Console.WriteLine($"是否关键属性:{ext.Critical}");
        
        // 获取属性原始二进制数据
        byte[] attrRawData = ext.RawData;
        Console.WriteLine($"属性原始数据长度:{attrRawData.Length}字节");
        
        // 如果是已知类型的扩展,可以转成强类型读取结构化内容,举个例子:
        if (ext.Oid.Value == "2.5.29.17") // 使用者可选名称SAN的OID
        {
            X509SubjectAlternativeNameExtension sanExt = (X509SubjectAlternativeNameExtension)ext;
            foreach (var name in sanExt.EnumerateDnsNames())
            {
                Console.WriteLine($"SAN DNS名称:{name}");
            }
        }
        Console.WriteLine("------------------------");
    }
}

store.Close();
  • 如果你要获取的是独立的属性证书(Attribute Certificate, AC),这类证书通常不内嵌在普通X.509公钥证书中,若你的业务场景中AC存储在普通证书的某个自定义扩展字段中,只需要匹配对应扩展的OID,读取RawData后再按照AC的结构解析即可。
  • .NET内置了多种常用扩展的强类型封装,比如X509KeyUsageExtension、X509EnhancedKeyUsageExtension等,不需要手动解析二进制数据,直接类型转换即可使用。

内容的提问来源于stack exchange,提问作者Artsem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:45:03