我在 kubernetes 中为我的入口设置了此设置
nginx.ingress.kubernetes.io/auth-tls-secret: "namespace/secret"
nginx.ingress.kubernetes.io/auth-tls-verify-client: "optional"
nginx.ingress.kubernetes.io/auth-tls-pass-certificate-to-upstream: "true"
ssl-client-cert
如果验证正确,这将在标头中将经过验证的证书发送到我的上游,但攻击者是否可以不提供客户端证书,而只是将设置ssl-client-cert
为他们选择的证书?我做了一个小测试,看起来不可能,但我在文档中也找不到有关此内容的任何信息。我知道入口使用nginx
,并且默认配置为(proxy-pass-headers
是true
)。
他们能直接覆盖证书吗?有人能给我提供一些文档链接,告诉我这是不可能的,或者类似的东西。我已经读完了注释文档没有明确地告诉我这一点。
答案1
这归结为客户端证书验证的基本原理。无论使用客户端证书进行验证的应用程序是什么,证书中始终存在需要验证的信任链(根 CA 或中间根 CA)。并且通常客户端证书由 CA 颁发给可以使用它们的人,因此 CA 也可以撤销它们。只有当威胁行为者能够组成 CA 时,他才能自己颁发证书。所以你不能提供任何你喜欢的证书。