我正在将根CA放在一起来签署多个中间CA,然后使用这些CA对VPN服务器和VPN用户证书进行签名。
当我向用户提供他们的证书时,理想情况下,我只希望给他们他们的密钥/证书和签名中介的证书。这将意味着,如果根CA被破坏,那么如果没有用户直接信任它,那么曝光应该是最小的。
在测试上述设置后,我将中间CA证书导入到一个Windows 10计算机中,然后是用户证书,但是证书上有一个警告:"Windows没有足够的信息来验证此证书。“
我假设导入根CA证书会解决这个问题,但是如果授予颁发中间CA证书的Windows需要完整的链来信任证书,那么为什么Windows需要完整的链呢?
发布于 2019-10-24 22:56:03
PKI基于CA证书,CA证书是您信任的证书,可以为其他证书提供担保。
您将始终拥有CA的证书副本。我们叫它"bdxCA“吧
当Bob带着一个证书来时,上面写着“嗨,我是鲍勃,这是我的bdxCA签名的证书”,计算机查找他的bdxCA副本,看到它确实签署了证书,并且为了指定的目的信任bdxCA(例如用户身份)。
现在来了中级核证机关。这些证书能够对其他证书进行签名,但您并不直接信任它,但是它的信任来源于“真实”CA。
因此,您可能有bdxCA签名bdx_HR_CA,它本身签署了Bob证书。在这里,鲍勃应该提供他自己的证书作为中间证书(S):“嗨,我是鲍勃,这是我的证书,由bdx_HR_CA签署,你可以看到它是由bdxCA签署的。”你确认情况确实如此,并接受它。
如果Bob没有提供中间证书,它可能被接受,也可能不会被接受。如果接收方没有bdx_HR_CA的副本,他们将无法验证它,因此将拒绝它。但是,中间CA可能是在本地导入的(因此它能够找到它),或者可能爱丽丝已经显示了她自己的证书以及bdx_HR_CA证书,因此后者已经被自动存储。此外,在某些情况下,证书包括一个url,从中可以下载父(中间)证书,并且某些客户端能够帮助下载它们。
所有这些都导致一种情况,即当中间证书丢失时,它们可能会验证,也可能不会验证,这取决于所使用的软件和以前的机器历史记录,所有这些都会导致不一致的问题,因为它们有时只会失败。
然后,CA证书也可以由另一个CA签名。这通常是在新CA不可能被所有客户端信任时完成的。由他们信任的另一个CA签名允许他们信任这个新CA发出的证书(把它当作中间证书)。
在您的示例中,您已经导入了CA证书,但是您可能还没有将其标记为可信的,因此Windows没有到可信CA的验证路径。
最后,由于您的用例是关于VPN服务器和VPN用户证书的,请注意这些证书通常使用自己的CA,而服务器CA是在VPN配置中提供的。在这种情况下,windows是否信任它并不重要,因为VPN客户端只需检查VPN证书是否是它所期望的证书。
发布于 2019-10-26 15:01:15
这将意味着,如果根CA被破坏,那么如果没有用户直接信任它,那么曝光应该是最小的。
以上所述毫无意义。根CA证书的另一个名称是信任锚点。作为信任的锚点,您必须安装它,以便对任何从属CA以及随后的end实体证书进行信任。如果您期望链从从属CA开始,或者换句话说,您希望从属CA是信任锚,那么根CA的意义是什么?您成功的做法是将证书链缩短一个。如果您妥协您的下属CA,您将遇到同样的设想问题。
如果你担心你的根CA被破坏了(你应该这么做),那么当你不使用你的根CA时,不要把它连接到网络上(例如,使用USB棒来移动文件)。如果您仍然担心,请投资硬件安全模块来存储根CA的私钥。更好的是,投资一个为您的根CA,另一个为您的下属CA。
当我向用户提供他们的证书时,理想情况下,我只希望给他们他们的密钥/证书和签名中介的证书。
这是显示客户端证书的正确方法。您的VPN客户端将两者都发送到服务器,此时服务器将使用它们构建到它在其信任锚存储中的根CA证书的链。如果一切顺利,这将验证客户端。
类似地,服务器将向您展示它的证书(以及任何从属CA证书),您的客户端将使用这些证书在信任-锚存储中构建到任何根CA证书的链。如果根CA未安装,则VPN客户端无法确认您已选择信任它。
这是相互身份验证,正在发生两件事:
https://security.stackexchange.com/questions/220170
复制相似问题