2

我有一个从具有以下证书路径的子 CA 颁发给我的证书:

Root CA
   Sub CA
      My Certificate

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

4

1 回答 1

3

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

如果你中间有一个中间的 Sub CA,它的证书是由 Root CA 签名的,Sub CA 直接给你的证书签名。

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

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

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

  • 在您的受信任证书中包含子 CA 证书或
  • 确保 Sub CA 证书包含在最终用户证书中,以便可以建立链。
于 2013-08-06T20:38:42.937 回答