验证由子网CA签名的PKI证书,该证书对于VPN网关是未知的,但由受信任的根

时间:2016-03-20 22:50:23

标签: certificate vpn cisco pki

我的架构中有一个根CA和多个子CA,每个子CA用于多个域。每个域都有一个VPN网关(Cisco路由器),它配置了一个根CA信任点,一个用于其域中的子CA.它能够成功验证客户端提供的证书,这些证书由其子域中的子CA签名。我希望能够做的是让VPN网关成功验证来自VPN客户端的证书,这些证书已由不同域中的子CA签名。当然,每个子CA证书都由根签名。

此方案已在Strongswan客户端中成功实施 - > Strongswan VPN Server,但我们无法使其与Cisco AnyConnect一起使用 - >思科路由器。思科似乎不太了解从客户端请求额外的证书信息。它无法找到合适的信任点并拒绝连接。

有没有人这样做过,可以提供一些建议吗?

谢谢!

1 个答案:

答案 0 :(得分:-1)

假设你有一个自签名的根CA“R”作为信任锚,以及由R签名的两个域,中间CA“A”和“B”。

然后你有“A”签署的客户证书“alice”,以及B签署的客户证书“bob”。

然后当alice进入她的域名时,安装了R和A,她的证书就会验证。

但是当她去bob的域名时,有R和B,她的证书不会验证,即使它是由A签名而A是由R签名。

这是因为A没有安装在bob的域中,或者,alice没有发送A.

但是,alice的TLS客户端可以发送证书“alice”以及中间证书“A”。在这种情况下,在有R和B的bob域中,不使用B.传入的客户端证书链包含“alice”和A,alice由A签名,A由R签名,并且alice被验证。 (爱丽丝没有理由发送R的副本 - 无论如何都不会使用它。)

您必须查看您的客户端配置。它可能就像确保在客户端上安装A一样简单,在这种情况下,客户端TLS库可以在出路时将其附加到链。这是我要尝试的第一件事。在客户端安装A,alice用来联系bob的域名。它不需要作为受信任的根安装 - 就像alice在连接时使用的证书存储中的CA一样。