2009-07-24 81 views
0

在C#中我加载从像这样初始化的的X509Store X509Certificate2对象:X509Certificate2:扩展丢失

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

我做了我的证书中OpenSSL和它被设置为“任何目的”。所以我期望X509Certificate2.Extensions非空,并保持“服务器身份验证”扩展名。但是,扩展总是一个空列表。有任何想法吗?

回答

2

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

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的命令,并在证书生成的配置文件,我大概可以多一些帮助。

+0

感谢您的信息..我会考虑直接在我的OpenSSL东西中安置这些东西。 当我说它被设置为“任何目的”时,我指的是Windows中的证书管理器MMC管理单元。如果您查看已安装证书的证书属性,请在“常规”选项卡中标记“已启用此证书的所有用途”。但我想这或者意味着其他的东西,或者只是随机的Microsoft竹节。 – evilfred 2009-08-10 18:41:24