我的服务器上安装了给定的证书。该证书具有有效日期,并且在 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 方法将其视为无效!为什么?

有帮助吗?

解决方案

尝试使用验证证书链 X509链条 班级。这可以准确地告诉您证书被视为无效的原因。

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

其他提示

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

这是来自真实 CA 的证书还是您自己签署的证书?开发人员经常使用的证书签名工具(例如 OpenSSL)默认情况下不会添加一些重要的扩展。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top