Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么此X.509证书被视为无效?_C#_Ssl_Certificate_X509 - Fatal编程技术网

C# 为什么此X.509证书被视为无效?

C# 为什么此X.509证书被视为无效?,c#,ssl,certificate,x509,C#,Ssl,Certificate,X509,我的服务器上安装了给定的证书。该证书具有有效日期,并且在Windows证书MMC管理单元中似乎完全有效 然而,当我试图读取证书时,为了在HttpRequest中使用它,我找不到它。以下是使用的代码: X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly); X509Certificate2Collection col =

我的服务器上安装了给定的证书。该证书具有有效日期,并且在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,默认情况下不会添加一些重要的扩展。

尝试使用类验证证书链。这可以确切地告诉您证书被视为无效的原因


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

链证书存在,但该用户无法访问。我使用MSDN中的此示例代码检查链状态:。此代码根据用户的不同运行不同的状态。我将尝试重新安装证书。谢谢