【问题标题】:Why is this X.509 certificate considered invalid?为什么此 X.509 证书被视为无效?
【发布时间】:2008-09-18 23:42:11
【问题描述】:

我的服务器上安装了给定的证书。该证书具有有效日期,并且在 Windows 证书 MMC 管理单元中似乎完全有效。

但是,当我尝试读取证书以在 HttpRequest 中使用它时,我找不到它。这是使用的代码:

    X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
    store.Open(OpenFlags.ReadOnly); X509Certificate2Collection col =
    store.Certificates.Find(X509FindType.FindBySerialNumber, "xxx", true);

xxx是序列号;参数true 表示“仅有效证书”。返回的集合为空。

奇怪的是,如果我通过false,表明可以接受无效证书,则该集合包含一个元素——具有指定序列号的证书。

结论:证书看似有效,但Find 方法将其视为无效!为什么?

【问题讨论】:

    标签: c# ssl certificate x509


    【解决方案1】:

    尝试使用X509Chain 类验证证书链。这可以准确地告诉您为什么证书被视为无效。

    正如 erickson 所建议的,您的 X509Store 可能没有来自链中 CA 的受信任证书。如果您使用 OpenSSL 或其他工具生成自己的自签名 CA,则需要将该 CA 的公共证书添加到 X509Store。

    【讨论】:

    • 链证书存在,但不知何故此用户无法访问。我使用 MSDN 中的这个示例代码来检查链状态:tinyurl.com/4wfnng。此代码根据用户返回不同的状态。我将尝试重新安装证书。谢谢。
    【解决方案2】:

    X509Store 中是否存在颁发者的证书?证书只有在您信任的人签署时才有效。

    这是来自真实 CA 的证书,还是您自己签署的证书?开发者常用的证书签名工具,如 OpenSSL,默认不添加一些重要的扩展。

    【讨论】:

      【解决方案3】:

      我相信 x509 证书与特定用户相关联。它可能是无效的,因为在代码中您以与创建它的用户不同的用户身份访问它吗?

      【讨论】:

        猜你喜欢
        • 2016-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-01
        相关资源
        最近更新 更多