【问题标题】:Validating a PKI certificate signed by a Sub-CA which is unknown to the VPN Gateway, but signed by a trusted root验证由 VPN 网关未知但由受信任的根签名的子 CA 签名的 PKI 证书
【发布时间】:2016-07-07 08:18:39
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

  • 路由器不应该搜索从属CA。如果您的客户端配置正确,它应该向所有下属显示其握手。
  • 所以您是说 AnyConnect 客户端应该提供它的证书以及从属 CA 和主 CA?我在客户端(linux客户端)的配置中找不到这个。
  • 是的。如果您阅读 RFC 5246 第 7.4.6 节,您会看到它描述了使用与服务器证书相同的结构发送客户端证书 - “此消息将服务器的证书 传递给. ……”。也许从最终实体和从属 CA 证书创建一个证书包。 'Master'(信任锚)应单独配置;我相信它使用了 NSS,这是 Firefox 和 Chrome 使用的库,所以如果 root 在那里受信任,那么对于您的 AnyConnect 应该没问题。
  • 这是否可以简单地将客户端->子->主证书连接到 AnyConnect 呈现给服务器的一个 .pem 文件中?
  • 客户和下属,是的。您的“主人”(我假设您的意思是根 CA 证书)应作为单独的实体添加到服务器的信任锚存储中。具体如何完成取决于 SSL/TLS 库和您使用的发行版。

标签: certificate vpn cisco pki


【解决方案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经过验证。 (alice 没有理由发送 R 的副本——它无论如何都不会被使用。)

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

【讨论】:

  • 我试过这样做。这是一个 Centos 6.6 服务器,所以我使用我在网上找到的标准方法来安装新证书。不幸的是,没有运气。
猜你喜欢
  • 1970-01-01
  • 2015-11-02
  • 1970-01-01
  • 2013-08-02
  • 2017-04-21
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
相关资源
最近更新 更多