【问题标题】:Cert-manager Lets Encrypt certificate not using correct duration in 'spec.durartion' (using default)Cert-manager 让加密证书在“spec.durartion”中不使用正确的持续时间(使用默认值)
【发布时间】:2021-12-14 20:24:54
【问题描述】:

我已经在我的 k8 环境中设置了 cert-manager。使用 cert-manager v1.6.1(撰写时最新)

我设置了一个使用 dns01 挑战的 ACME 颁发者。

我创建了一个证书资源,将 spec.duration 指定为 7 小时。

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: mydomain.com
  namespace: my-app
spec:
  secretName: app-certs
  duration: 7h
  renewBefore: 6h
  issuerRef:
    name: acme-issuer
    kind: Issuer
  commonName: mydomain.com
  dnsNames:
    - mydomain.com

我可以在 certifiatesigningrequest 资源上看到它解释了我在证书上设置的持续时间。

Spec:
  Duration:  7h0m0s

证书签名请求似乎一切正常。没有错误或任何东西,我看到证书已成功生成。

Conditions:
  Last Transition Time:  2021-12-14T20:10:15Z
  Message:               Certificate request has been approved by cert-manager.io
  Reason:                cert-manager.io
  Status:                True
  Type:                  Approved
  Last Transition Time:  2021-12-14T20:10:16Z
  Message:               Certificate fetched from issuer successfully
  Reason:                Issued
  Status:                True
  Type:                  Ready

但证书实际上使用的是默认持续时间(请参阅续订时间)

Status:
  Conditions:
    Last Transition Time:  2021-12-14T20:10:16Z
    Message:               Certificate is up to date and has not expired
    Observed Generation:   4
    Reason:                Ready
    Status:                True
    Type:                  Ready
  Not After:               2022-03-14T19:10:14Z
  Not Before:              2021-12-14T19:10:15Z
  Renewal Time:            2022-03-14T18:30:14Z

那么我做错了什么吗?我认为如果 acme 挑战失败,它不会颁发任何证书。如何正确设置持续时间?

【问题讨论】:

    标签: kubernetes cert-manager


    【解决方案1】:

    显然 Let's Encrypt 仅允许 90 天有效证书 (source)。

    我们有时会被问到为什么我们只提供有效期为 90 天的证书。提出此问题的人通常担心 90 天太短,并希望我们能像其他一些 CA 那样提供持续一年或更长时间的证书。

    在文章后面

    一旦自动更新工具得到广泛部署并运行良好,我们可能会考虑更短的生命周期。

    我最终做的是将证书renewBefore 指定为我希望它续订的时间。

    其他选项:您还可以查看具有比 Let's Encrypt 更短的有效期的 Step CA 证书。

    【讨论】:

    • renewBefore 是否适用于letsencrypt 证书?上次我在玩它,durationrenewBefore 都被letsencrypt忽略了。默认情况下,它发生在证书持续时间的2/3 中。 reference
    • 我的理解是renewBefore 是一个 cert-manager 配置 - 它只是告诉 cert-manager 何时获取新证书,并且在获取新证书时不使用该信息。而duration 只是某些证书(如 Step-CA)的有效参数。
    • 更正 - 颁发新证书时不使用 renewBefore。它只是告诉 cert-manager 何时获得一个新的。
    猜你喜欢
    • 2022-08-09
    • 2020-02-21
    • 2020-03-24
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多