Certificate 验证由VPN网关未知但由受信任根签名的子CA签名的PKI证书

Certificate 验证由VPN网关未知但由受信任根签名的子CA签名的PKI证书,certificate,vpn,cisco,pki,Certificate,Vpn,Cisco,Pki,我有一个架构,其中有一个根CA和多个子CA,每个子CA对应多个域。每个域都有一个VPN网关(Cisco路由器),该网关配置了根CA信任点,并为其域中的子CA配置了一个信任点。它能够成功地验证由其域中的子CA签名的客户端提供的证书。我希望能够做到的是让VPN网关成功验证来自VPN客户端的证书,这些证书已由不同域中的子CA签名。当然,每个子CA证书都由root用户签名 此方案已在Strongswan客户端->Strongswan VPN服务器中成功实施,但我们无法使其与Cisco AnyConnec

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

此方案已在Strongswan客户端->Strongswan VPN服务器中成功实施,但我们无法使其与Cisco AnyConnect->Cisco路由器配合使用。Cisco似乎没有足够的知识从客户端请求额外的证书信息。它只是无法找到合适的信任点并拒绝连接

有没有人做过类似的事情,可以提供一些建议


谢谢

假设您有一个自签名的根CA“R”和两个域,中间CA“a”和“B”由R签名,作为信任锚

然后您拥有由“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经过验证。(alice没有理由发送R的副本——反正也不会使用它。)


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

路由器不必搜索从属CA。如果您的客户端配置正确,它应该用它的握手来表示所有下级。那么你是说AnyConnect客户端应该同时表示它的证书以及下级CA和主CA?我在客户端(linux客户端)的配置中很难找到它。是的。如果您阅读RFC 5246第7.4.6节,您将看到它描述了使用与服务器证书相同的结构发送客户端证书-“此消息将服务器的证书链传送到…”。可以从终端实体和从属CA证书创建证书束。“主”(信任锚)应单独配置;我相信它使用的是NSS,这是Firefox和Chrome使用的库,因此如果根用户在那里受信任,那么AnyConnect应该可以使用。这是一个简单的方法,比如将客户端->子->主证书连接到AnyConnect呈现给服务器的一个.pem文件中吗?是的,客户端和下级。您的“master”(我假设您指的是根CA证书)应该作为一个单独的实体添加到服务器的信任锚存储中。如何做到这一点取决于SSL/TLS库和您正在使用的发行版。它是Centos 6.6服务器,所以我使用了我在网上找到的标准方法来安装新证书。不幸的是没有运气。