Authentication 如何修复证书管理器对Let';在使用nginx入口的Kubernetes上使用客户端证书身份验证时,s加密ACME挑战?

Authentication 如何修复证书管理器对Let';在使用nginx入口的Kubernetes上使用客户端证书身份验证时,s加密ACME挑战?,authentication,ssl,nginx,kubernetes,cert-manager,Authentication,Ssl,Nginx,Kubernetes,Cert Manager,我们已经设置了一个新的入口路由,它需要TLS证书身份验证,并且我们已经将它放在它自己的子域上,但是我们发现cert manager无法为它颁发证书 使用此处提供的示例,我们生成CA证书和CA密钥,然后配置客户端证书: 在日志中,我可以看到所有.acme challenge请求都返回403。我猜nginx拒绝了请求,因为Let's Encrypt无法为质询请求提供客户端证书。为了绕过ACME的客户端证书要求,我需要做什么?这里的问题是,我们实际上错误配置了nginx.ingres.kuberne

我们已经设置了一个新的入口路由,它需要TLS证书身份验证,并且我们已经将它放在它自己的子域上,但是我们发现cert manager无法为它颁发证书

使用此处提供的示例,我们生成CA证书和CA密钥,然后配置客户端证书:


在日志中,我可以看到所有
.acme challenge
请求都返回403。我猜nginx拒绝了请求,因为Let's Encrypt无法为质询请求提供客户端证书。为了绕过ACME的客户端证书要求,我需要做什么?

这里的问题是,我们实际上错误配置了
nginx.ingres.kubernetes.io/auth tls secret
注释。它必须是
namespace/name
格式——其中
namespace
是包含包含客户端CA证书的机密的命名空间,
name
是该机密的名称——但我们只提供了名称,因为机密与入口位于同一命名空间中

通过将nginx入口控制器配置转储到
nginx.conf.txt
,我能够诊断问题:

  kubectl exec <NAME OF INGRESS CONTROLLER POD> -n <INGRESS NAMESPACE> -- nginx -T | tee nginx.conf.txt
关键在于这两条线:

        # Location denied, reason: invalid format (namespace/name) found in 'the-secret-name'
        return 403;
这让我找到了这个秘密名称的注释。一旦我解决了这个问题,ACME工作正常

        # Location denied, reason: invalid format (namespace/name) found in 'the-secret-name'
        return 403;