Kubernetes Cert-Manager 无法让 http 01 ACME 挑战正常工作

Kubernetes Cert-Manager can't get http01 ACME challange to work

您好,我正在努力让 Cert-Manager 在我的 Azure AKS 上使用 let'sencrypt 来保护 asp.net 核心 Web 应用程序。

我有一个这样的 ClusterIssuer:

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencryptstaging-issuer
spec:
  acme:
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email: letsencryptstaging@prodibi.com
    privateKeySecretRef:
      name: letsencryptstaging-secret
    solvers:
    - http01:
        ingress:
          class: nginx

我申请这样的证书:

apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
  name: aks-prodibiv2-com-staging
spec:
  secretName: aks-prodibiv2-com-staging-secret
  duration: 2160h
  renewBefore: 480h
  organization:
  - prodibiv2
  dnsNames:
  - aks.prodibiv2.com
  issuerRef:
    name: letsencryptstaging-issuer
    kind: ClusterIssuer

我也已将注释添加到我想使用的入口控制器

certmanager.k8s.io/acme-challenge-type: http01
certmanager.k8s.io/cluster-issuer: letsencryptstaging-issuer

在下面的截图中我们可以看到证书请求是"Waiting to complete" 我们还可以看到我们有两个入口控制器,一个用于挑战的控制器似乎没有 IP,域指向 ingress-prodibiweb

如果我尝试将域放在 .well-known 路径前面,我会收到 404 not found 错误。

所以我的猜测是 cert-manager 没有正确配置以使用 ingress-prodibiweb(指向 asp.net 核心 webapp)或类似的东西。关于如何让它工作有什么想法吗?

  1. 您的入口 IP 是私有的。 Let's encrypt 无法访问
  2. 您需要确保您使用的是您正在使用的 Nginx Ingress
    - http01:
        ingress:
          class: nginx
  1. 确保您的域指向正确的 IP。 (入口 IP 和负载均衡器 IP) 现在是 20.50.42.93 https://mxtoolbox.com/SuperTool.aspx?action=a%3aaks.prodibiv2.com&run=toolpage

dns01也是请求SSL的解决方案。权限够的话可以试试