Kubernetes Cert-Manager无法使http01 ACME挑战正常工作

时间:2020-05-21 07:19:11

标签: asp.net-core kubernetes lets-encrypt azure-aks cert-manager

您好,我正在努力让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

在以下屏幕截图中,我们可以看到证书请求为“等待完成” 我们还可以看到我们有两个入口控制器,用于挑战的一个似乎没有IP,并且域指向了ingress-prodibiweb

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

所以我的猜测是,证书管理器没有正确配置为使用ingress-prodibiweb(指向asp.net核心webapp)或类似的东西。关于如何尝试使其正常工作的任何想法?

fabric8io's k8s client APIS

1 个答案:

答案 0 :(得分:1)

  1. 您的入口IP是私有的。让我们进行加密无法访问。
  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的解决方案。如果您有足够的权限,可以尝试一下。