除非我将Sub CA证书放在受信任的根证书颁发机构中,为什么我的证书无效?

时间:2013-08-06 19:59:15

标签: c# .net x509certificate x509 x509certificate2

我从子CA获得了证书,证书路径如下:

Root CA
   Sub CA
      My Certificate

为什么当我尝试使用X509Chain.Build()验证它时,我总是需要在我受信任的根证书颁发机构文件夹中使用Sub CA才能返回true?我已经在那里拥有根CA证书,所以既然我信任root,作为一个信任网,它是否应该也不信任子CA?因为现在它说除非我将Sub CA证书添加到我受信任的根证书颁发机构,否则它无法构建到受信任的根证书颁发机构的链。

1 个答案:

答案 0 :(得分:3)

详细说明Erik的评论,信任根CA证书意味着您将信任Root CA直接签署的内容。

如果中间有一个中间子CA,则其证书由根CA签名,而子CA直接签署您的证书。

Root CA ---signs/verifies---> Sub CA ---signs/verifies---> End user certificate

正如Erik所说,如果您没有Sub CA证书,则无法将根CA链接到最终用户证书。 Root可以验证Sub CA证书,Sub CA可以验证最终用户证书,但Root无法跳过Sub CA并验证最终用户证书,因为root用户没有签署最终用户证书

解决此问题的两种方法是:

  • 在您的可信证书中包含Sub CA证书或
  • 确保Sub CA证书包含在最终用户证书中,以便链接 可以建立。