【问题标题】:Cert manager letsencrypt only accepting default value for certificate , ignoring duration and renewBefore证书管理器让加密只接受证书的默认值,忽略持续时间和更新前
【发布时间】:2022-08-09 16:51:07
【问题描述】:

我正在使用 cert-manager (1.6.3) 创建证书。但问题是,duration 和 renewBefore 没有采用我的自定义值,而是采用默认值(90 天)

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: test-tls-com
  namespace: api
spec:
  issuerRef:
    kind: ClusterIssuer
    name: letsencrypt-prod
  duration: 10h
  renewBefore: 1h
  commonName: \"*.domain-name.in\"
  dnsNames:
    - \"*.domain-name.in\"
  secretName: test-tls-wild

但是当我描述证书时,我可以看到续订时间不匹配

kubectl -n api describe  cert test-tls-com

---

 Not After:               2022-08-14T15:30:38Z
  Not Before:              2022-05-16T15:30:39Z
  Renewal Time:            2022-08-14T13:30:38Z  <--it is not 1h renewal time

我的集群发行者看起来像

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
  namespace: cert-manager
spec:
  acme:
    # The ACME server URL
    server: https://acme-v02.api.letsencrypt.org/directory
    # Email address used for ACME registration
    email: xxx@gmail.com
    # Name of a secret used to store the ACME account private key
    privateKeySecretRef:
      name: letsencrypt-prod
    # Enable the HTTP-01 challenge provider
    solvers:
    - dns01:
        digitalocean:
          tokenSecretRef:
            name: digitalocean-dns
            key: access-token
 kubectl version
Client Version: version.Info{Major:\"1\", Minor:\"20\", GitVersion:\"v1.20.5\", GitCommit:\"6b1d87acf3c8253c123756b9e61dac642678305f\", GitTreeState:\"clean\", BuildDate:\"2021-03-18T01:10:43Z\", GoVersion:\"go1.15.8\", Compiler:\"gc\", Platform:\"linux/amd64\"}
Server Version: version.Info{Major:\"1\", Minor:\"21\", GitVersion:\"v1.21.11\", GitCommit:\"38d3c1f3d5306401bcf39a71bad3b5a5106033d7\", GitTreeState:\"clean\", BuildDate:\"2022-03-16T14:02:06Z\", GoVersion:\"go1.16.15\", Compiler:\"gc\", Platform:\"linux/amd64\"}

使用上述配置,我可以创建证书,但不确定为什么续订时间与持续时间和 renewBefore 不匹配

    标签: ssl kubernetes cert-manager


    【解决方案1】:

    Renewal Time 与 duration 和 renewBefore 不匹配,因为必须使用 Go time.Duration 字符串格式指定 renewBefore 和 duration 字段,该格式不允许使用 d(天)后缀。您必须改用 s、m 和 h 后缀来指定这些值。

    cert-manager 规定的 YAML 文件中的 Duration 和 RenewBefore 应如下所示;那么只有它会与更新时间和持续时间相匹配。

    例子 :

    持续时间:2160h #90d

    renewBefore: 360h # 15d - 我们可以提供的自定义日期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多