是否可以在不信任其根 CA 的情况下信任 Windows 中的证书?

bkr*_*bkr 14 windows ssl

是否有可能让 Windows 信任证书,而不让它信任根 CA 作为受信任的根 CA?

说我有以下证书链,

Dept-Root-CA
Dept-Intermediate-1
Server-Certificate
Run Code Online (Sandbox Code Playgroud)

我想信任 Server-Certificate,但不想信任 Dept-Root-CA,因为这样它就可以签署任何证书,我的服务器也会信任它。仅仅因为我愿意为特定操作信任 Server-Certificate 上的证书,并不意味着我愿意相信 Dept-Root-CA 已得到适当保护。

谢谢

Rya*_*ies 6

不。只要证书上写着“颁发者:xxx”,那么您还必须信任 xxx,一路向上。如果它是自签名证书,您可以将它放在受信任的根 CA 存储中,并且由于它是由同一实体颁发和颁发的,因此应该可以信任它。

但不,完全规避基于证书的安全性的整个目的通常是不可行或不可取的。

  • 我以前很怕那个。不过,我不会称之为规避。仅仅因为我想要一个安全通道与不同组织组中的机器交谈并不意味着我想要信任他们的 CA。 (6认同)
  • 我不确定我是否明白你在说什么。我想明确信任他们的证书。如果它被更改,我将不得不再次明确信任它。我基本上想要像 Firefox 那样的证书信任模型。在 Firefox 中,如果证书在现有可信 CA 下无效,您仍然可以选择信任它 - 如果它发生变化,您将不得不选择信任新证书,因为它没有被明确信任。 (6认同)
  • 实际上,他们只会每 2 年更改一次。我使用的 MS 产品要求通过 https 保护连接。所以它必须被信任。因为它是用他们的 CA 签名的,所以我必须信任他们的 CA - 我不想这样做,因为这会允许他们将任何证书欺骗到我的服务器,而不是允许他们与特定主机名进行有限的交互。 (6认同)
  • `只是不断更改他们的证书` 如果远程端更改了他们的证书,那么它与您保存的证书不匹配。如果您忽略所有 CA 业务,您是否只是将其视为 SSH 主机密钥。 (3认同)

小智 5

嗯.... 你可以用另一种方式获取信任信息。

不幸的是,这有点复杂。

创建您自己的 CA,然后通过使用您的 CA 签署证书来为 Dept-Intermediate-1(或 Dept-Root-CA)创建您自己的交叉签名颁发者,可能会添加域限制。如果“真正的”Dep-Intermediate-1 被停用(最好)或未知,Windows 将使用您的信任链。

在此处查看我的其他答案:Restrict a root certificate to a domain

这就是证书应该如何工作,使用数字签名来表示密钥所有权的声明。由于您要断言证书和密钥属于服务器,因此您在自己的授权下自行签名,然后告诉系统信任您。

没有CA 层次结构的证书仍然有很多实用程序,高于 SSH 密钥提供的功能;其中一部分是对他们的限制。密钥用途、有效日期、撤销信息、域限制等。另一部分是识别信息;拥有密钥、颁发者身份、强制执行的 CA 策略、密钥存储信息等的服务器。