X509Certificate2:缺少扩展

时间:2009-07-24 00:19:42

标签: c# certificate ssl-certificate

在C#中我正在从X509Store中加载X509Certificate2对象,如下所示:

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

我在Openssl中制作了我的证书,并将其设置为“Any purpose”。所以我希望X509Certificate2.Extensions非空,并保持“Server Auth”扩展名。但是,Extensions始终是一个空列表。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我会在一个独立的来源中仔细检查证书,只是为了检查你认为那里的数据是否存在。我通常使用一种基于网络的工具:

http://www.redkestrel.co.uk/cgi/decodeCert.pl

http://www.bogpeople.com/networking/CertDecoder/

是两个这样的工具。

这样你就知道它是测试数据还是使用X509库。

接下来,我不确定你的意思是什么设置为“任何目的”。我浏览了Open SSL文档,但我没有看到你所描述的设置。证书中有两个扩展,用于定义密钥的使用 - 密钥使用和扩展密钥使用。并且Open SSL命令和配置文件的描述没有显示您可以设置“any”并且所有这些都打开的位置。我认为你想要的是扩展密钥用法扩展的“serverAuth”值:

http://www.openssl.org/docs/apps/x509v3_config.html#Extended_Key_Usage_

如果您愿意发布使用的特定openSSL命令和证书生成的配置文件,我可能会提供更多帮助。