【问题标题】:How to use Wildcard certificates from Let’s Encrypt with cert-manager如何通过 cert-manager 使用 Let's Encrypt 的通配符证书
【发布时间】:2020-03-13 17:46:15
【问题描述】:

我创建了两个文件,一个用于 ClusterIssuer,第二个用于证书。 我的域是一个 example.com,我需要使用通配符 *.testing.example.com 创建一个新的子域,并且我已经在 Route53 中创建了一个名为 *.testing.example.com 的条目,其中包含 A 记录并使用 nlb 映射。

以下是我的个人资料,这对我有好处,但我收到错误 " msg"="propagation check failed" "error"="DNS record for \"testing.example.com\" not yet 传播"

ClusterIssuer.yaml

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    # The ACME server URL
    server: https://acme-v02.api.letsencrypt.org/directory
    # Email address used for ACME registration
    email: devops@example.com
    privateKeySecretRef:
            name: letsencrypt-prod
    solvers:
    # example: cross-account zone management for example.com
    # this solver uses ambient credentials (i.e. inferred from the environment or EC2 Metadata Service)
    # to assume a role in a different account
    - selector:
        dnsZones:
          - "example.com"
      dns01:
        route53:
          region: ap-south-1
          hostedZoneID: 71MYVttggee
          role: arn:aws:iam::123456:role/dns-manager



Certificate.yaml

apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
  name: example-cert
spec:
  secretName: acme-crt
  issuerRef:
    kind: ClusterIssuer
    name: letsencrypt-prod
  commonName: testing.example.com
  dnsNames:
    - '*.testing.example.com'
  acme:
    config:
    - dns01:
        provider: route53
      domains:
        - '*.testing.example.com'

【问题讨论】:

  • 您是否看到在您的区域中创建的验证记录?签入 R53 控制台。
  • 是的,在我的区域中创建了验证记录 (TXT)?
  • 然后你只需要等待一段时间让它们传播,如日志所述。
  • 有什么具体的时间吗?一般需要多长时间?
  • 这取决于您的区域 TTL,但通常在 30-60 分钟范围内。

标签: kubernetes lets-encrypt amazon-eks cert-manager


【解决方案1】:

你所拥有的是正确的,你只需要等待 DNS 传播,以便 LetsEncrypt 可以检查验证记录。

【讨论】:

  • 但日志显示 ""msg"="propagation check failed"" ?那我还需要等吗?
【解决方案2】:

您必须使用DNS-01的方法进行验证。

您可以使用issuer

https://cert-manager.io/docs/configuration/acme/dns01/

但是,您还必须为证书创建另一个 YAML

apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
  name: le-crt
spec:
  secretName: tls-secret
  issuerRef: 
    kind: Issuer
    name: letsencrypt-prod
  commonName: "*.example.in"
  dnsNames:
    - "*.example.in"

上面的 yaml 证书将指向您创建的颁发者,当您获得证书时,它将被存储到 kubernetes 秘密名称中:tls-secret

您可以在ingress 上注入或使用此密钥。

另外,如果您遇到CAA 记录的403 错误,请在DNS zone 首先添加CAA 记录,我们添加ACNAME 记录。

更多参考:https://stackoverflow.com/a/68476135/5525824

【讨论】:

    猜你喜欢
    • 2021-01-14
    • 2021-07-14
    • 1970-01-01
    • 2021-10-24
    • 2019-05-11
    • 1970-01-01
    • 2018-08-13
    • 2018-09-16
    • 1970-01-01
    相关资源
    最近更新 更多