【问题标题】:Ingress client certificate authenticate requires CA certificate to be stored in secret?入口客户端证书身份验证需要秘密存储 CA 证书吗?
【发布时间】:2021-05-07 21:55:03
【问题描述】:

我想在我的 AKS 群集中启用客户端证书身份验证,但我有一个我似乎不明白的基本问题。根据docs,入口要求将 CA 证书存储在机密中。我的问题是:假设我使用由受信任的 CA 颁发的客户端证书(这就是正确的工作方式?CA 颁发他们签署的客户端证书?),为什么受信任的 CA 会给我他们的 CA 证书以进行存储在 AKS 群集中作为秘密? CA 是否只是将其证书分发给公众?这不是安全问题吗? (因为我可以使用该 CA 证书签署客户端证书)

【问题讨论】:

    标签: kubernetes-ingress azure-aks client-certificates ca cacerts


    【解决方案1】:

    CA 证书.crt 文件不包含私钥。它只包含公钥+证书信息,是公开的,不能用来签署新的证书。您可以安全地将ca.crt 存储在 Kubernetes Secret 中,它只需要服务器证书的私钥。

    【讨论】:

    • 谢谢!我仍然不清楚的一件事是,如果我使用受信任的 CA,任何拥有该 CA 签署的客户端证书的人(我的组织之外)仍然可以访问我的 AKS 群集。如果我想使用受信任的 CA,如何防止这种情况发生?
    • 是的,这就是为什么使用受信任的 CA 来实现此功能并没有真正意义的原因...如果您想走这条路,您可能应该使用私有 CA。无论如何,它有时很方便,但 IMO 这不是保护集群访问的好方法。如果需要公开,最好有一个私有集群或使用 OAuth 2.0 之类的东西。