C# 无效的基本条件:证书';未观察到的基本约束扩展

C# 无效的基本条件:证书';未观察到的基本约束扩展,c#,.net,wcf,certificate,x509certificate,C#,.net,Wcf,Certificate,X509certificate,我收到错误“InvalidBasicConstraints:未观察到证书的基本约束扩展。”此证书是使用OpenSSL颁发的,将用作WCF服务的服务器端测试证书(验证证书时会出现相同的错误)。我可以用这段代码复制错误 X509Certificate2 cert = new X509Certificate2(@"c:\test.cer"); X509Chain chain = X509Chain.Create(); X509ChainPolicy policy = new X509ChainPol

我收到错误
“InvalidBasicConstraints:未观察到证书的基本约束扩展。”
此证书是使用OpenSSL颁发的,将用作WCF服务的服务器端测试证书(验证证书时会出现相同的错误)。我可以用这段代码复制错误

X509Certificate2 cert = new X509Certificate2(@"c:\test.cer");

X509Chain chain = X509Chain.Create();
X509ChainPolicy policy = new X509ChainPolicy();
policy.RevocationMode = X509RevocationMode.NoCheck;
chain.ChainPolicy = policy;
bool valid = chain.Build(cert);

Console.WriteLine(string.Join(" -- ", chain.ChainStatus.Select(o => o.Status + ": " + o.StatusInformation)));
Console.WriteLine(valid ? "VALID" : "NOT VALID");
查看证书时,我可以看到这些基本约束

Subject Type=End Entity
Path Length Constraint=None
此错误是什么意思?我如何修复它?

我找到的关于基本约束的最相关的文章是这篇,但是它只谈到禁止子证书签名/创建更多的子证书,在我的例子中,我并没有尝试这样做

此外,任何解释上述基本约束含义的参考资料都会有所帮助。

读了上面的文章后,我发现有两种不同的主题类型

Basic Constraints: Subject Type=CA, Length Constraint=None
Basic Constraints: Subject Type=End Entity, Path Length Constraint=None
我使用的服务器端证书实际上是层次结构中的第三个链接

A->B->C….A发布了B,然后发布了签名的C

证书B在基本约束中也有
Subject Type=End Entity
。我找不到任何说明不同类型基本合同或其含义的文件,但基于上述两种类型的差异,我想说,
最终实体
意味着它不能颁发证书。它是链条的末端,与
Subject Type=CA
相反

当.NET验证链时,它发现B没有其父证书颁发证书的权限,并抛出错误,
未观察到证书的基本约束扩展


编辑:使用自签名证书颁发的新证书进行进一步测试验证了上述理论。

您的观察结果对我也有意义。谢谢!