0

在 C# 中,我从 X509Store 加载 X509Certificate2 对象,初始化如下:

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

我在 Openssl 中制作了我的证书,并将其设置为“任何目的”。所以我希望 X509Certificate2.Extensions 是非空的并持有“服务器身份验证”扩展名。但是,Extensions 始终是一个空列表。有任何想法吗?

4

1 回答 1

2

我会仔细检查独立来源中的证书,以检查您认为其中的数据是否真的存在。我通常使用其中一种基于 Web 的工具:

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

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

是两个这样的工具。

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

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

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

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

于 2009-07-24T20:41:11.163 回答