【问题标题】:InvalidBasicConstraints: A certificate's basic constraint extension has not been observedInvalidBasicConstraints:未观察到证书的基本约束扩展
【发布时间】:2013-02-28 20:01:27
【问题描述】:

我收到错误"InvalidBasicConstraints: A certificate's basic constraint extension has not been observed." 此证书是使用 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

此错误是什么意思,我该如何解决?

我发现的关于基本约束的最相关文章是这篇文章,http://unitstep.net/blog/2009/03/16/using-the-basic-constraints-extension-in-x509-v3-certificates-for-intermediate-cas/,但它只讨论了禁止子证书签署/创建更多子证书,在我的情况下,我并没有尝试这样做。

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

【问题讨论】:

    标签: c# .net wcf certificate x509certificate


    【解决方案1】:

    http://forums.juniper.net/t5/SSL-VPN/quot-Failed-to-authenticate-client-certificate-quot-after/td-p/89232/page/4

    阅读上面的帖子后,我看到有两种不同的主题类型,

    Basic Constraints: Subject Type=CA, Length Constraint=None
    Basic Constraints: Subject Type=End Entity, Path Length Constraint=None
    

    我使用的服务器端证书实际上是层次结构中的第三个链接。

    A -> B -> C....A 发出 B,B 然后发出已签名的 C。

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

    当 .NET 验证链时,它发现 B 没有其父证书颁发证书的权限并抛出错误 A certificate's basic constraint extension has not been observed

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

    【讨论】:

    • 你的观察对我来说也很有意义。谢了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 2011-09-30
    • 1970-01-01
    • 2019-10-16
    • 2011-08-13
    • 2017-03-29
    相关资源
    最近更新 更多