【问题标题】:X509Certificate2: Extensions are missingX509Certificate2:缺少扩展
【发布时间】:2010-11-13 14:18:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# certificate ssl-certificate


    【解决方案1】:

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

    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 命令和证书生成的配置文件,我可能会提供更多帮助。

    【讨论】:

    • 感谢您的信息。我会考虑直接在我的 OpenSSL 内容中设置这些内容。当我说它设置为“任何目的”时,我指的是 Windows 中的证书管理器 MMC 管理单元。如果您查看已安装证书的证书属性,则在“常规”选项卡中,“启用此证书的所有用途”已被标记。但我想这要么意味着其他东西,要么只是微软的随机欺骗。
    猜你喜欢
    • 2011-10-07
    • 2017-01-05
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2018-05-10
    • 2021-12-03
    • 2016-01-08
    相关资源
    最近更新 更多