用于 Ingress 中客户端证书身份验证的 CA 证书轮换

时间:2021-05-04 04:03:05

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

我想在客户端的请求由 Azure Kubernetes 集群中运行的服务提供服务之前使用客户端证书身份验证对其进行身份验证。我已经能够在我的入口资源中使用这些注释来做到这一点。

nginx.ingress.kubernetes.io/auth-tls-secret: <secret containing the CA certificate>
nginx.ingress.kubernetes.io/auth-tls-verify-client: <optional/on>

因此,任何具有证书并使用特定 CA 证书签名的客户端请求都将得到服务。 为了更清楚地说明,请求来自 Azure API 管理 (APIM) 实例(即这里的客户端是一个 APIM,它发送带有所有出站请求的客户端证书)。

现在,我想不时轮换 CA 证书(我猜这是进行客户端证书身份验证的正确方法?)。但这意味着 APIM 将需要发送由新 CA 证书签名的客户端证书。但是,我也希望旧证书的请求成功,直到切换到新 CA 完成。

ingress 是否提供了一种使用多个 CA 证书中的一个来验证客户端证书的方法;换句话说,类似于 CA 证书的轮换机制,以便没有停机时间?

我尝试将多个 CA 证书组合成一个秘密(即 cat CA1.crt CA2.crt > combined.crt,然后使用 combined.CRT 作为入口资源中的秘密;但入口似乎只考虑第一个证书 {{1} } 并拒绝任何使用 CA1.crt 签名的请求)。

感谢任何输入。谢谢!

0 个答案:

没有答案