Cert-Manager 证书续订流程 - 如何执行?

2023-11-27

我在用cert-manager-v0.10.0从其安装舵图

我在用kong就像入口控制器来管理入口操作。

所以我创建了一个ClusterIssuer资源,以便可以通过 kong-ingress 控制器从 Ingress 资源联系它。

The ClusterIssuer这是:

   apiVersion: certmanager.k8s.io/v1alpha1
   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: [email protected]
       # Name of a secret used to store the ACME account private key
       privateKeySecretRef:
         name: letsencrypt-prod
       # Enable the HTTP-01 challenge provider
       solvers:
       - http01:
           ingress:
             class: kong

我正在使用的入口资源是这样的。

您可以在这里看到,我将其指向之前创建的 ClusterIssuer,并且 另外,我将其指向 kong 作为入口控制器,根据kubernetes.io/ingress.class: "kong"其中包含注释:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    # add an annotation indicating the issuer to use.
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod # letsencrypt-staging
    kubernetes.io/ingress.class: "kong"
    plugins.konghq.com: swaggerapi-customer-production-basic-auth, swaggerapi-customer-production-acl
  name: production-customer-ingress-app
  # namespace: default
spec:
  rules:
  - host: appprod.mydomain.org
    http:
      paths:
      - backend:
          serviceName: customer-production-app
          servicePort: 80
        path: /comcustomerpr
  tls: # < placing a host in the TLS config will indicate a cert should be created
  - hosts:
    - appprod.mydomain.org
    secretName: letsencrypt-prod # < cert-manager will store the created certificate in this secret.

因此,当我创建上面的 Ingress 资源时,secretName上面在我的入口中引用的内容已创建,并且还有一个同名的证书资源......即letsencrypt-prod.

它将是接收 LetsEncrypt 验证成功过程的证书资源...

我得到了 TLS 加密,这里一切正常。

但现在,我想知道续订过程如何。因为我目前非常确定更新证书过程不会自动发生......

我正在这里读一些东西https://docs.cert-manager.io/en/latest/reference/certificates.html?highlight=renewal#certificate-duration-and-renewal-window该文档说有必要附加到创建的证书资源(kind:Certificate) the spec.duration and spec.renewBefore这种方式的属性

spec:
  secretName: example-tls
  duration: 24h
  renewBefore: 12h

如果 LetsEncrypt 颁发的证书默认期限为 90 天,我该如何指定这些spec.duration and spec.renewBefore属性?

我想讨论这个问题,因为我的主要问题是我没有创建证书,它是在执行 Ingress 资源(上面引用的)时创建的。

我怎样才能用我正在做的这种方法解决这里的更新过程?

UPDATE

我需要创建一个特定的kind:Certificate资源,引用我从 LetsEncrypt 获得的秘密?

我的意思是,像这样的东西?

apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
  name: letsencrypt-prod
spec:
  secretName: letsencrypt-prod
  dnsNames:
  - mydomain.com
  acme:
    config:
    - http01:
        ingressClass: kong
      domains:
      - mydomain.com
  issuerRef:
    name: letsencrypt-prod
    kind: ClusterIssuer

我在这里有疑问,因为目前我没有收到证书续订操作


既然你已经使用了letsencrypt-prod颁发者,并且没有做任何特殊/非标准的事情,证书续订过程将为您完全自动。

默认情况下,letscrypt 证书的有效期为 90 天,并每 30 天自动更新一次。如果您对使用购买的证书没有严格要求,或使用其他特定的证书颁发机构,那么这是一个不错的选择。

如果您仍然有疑问,那么您可以执行以下操作来亲自查看。首先解码当前证书的秘密数据并使用以下命令检查证书内容openssl命令。您将能够看到证书的到期日期,并记下该日期。现在,如果您从到期日期中减去 59 天,那么您应该大致得到证书管理器尝试续订证书的日期。为了安全起见,我多加了一天时间,我们还不算太早。然后在那一天再次重复这个过程;解码证书秘密,使用检查证书openssl命令,并检查证书到期日期。您会注意到证书的到期日期与以前不同,因此它会按照我们的预期自动续订。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cert-Manager 证书续订流程 - 如何执行? 的相关文章

随机推荐

  • 拟合3D点python

    我有 python 代码 可以生成数字 x y 和 z 的三元组列表 我想使用 scipy curve fit 拟合 z f x y 这是一些不起作用的代码 A 19 20 24 10 40 28 10 50 31 def func x y
  • 为什么我们需要 SQLite 中的 GLOB 子句?

    我是一名 Android 开发人员 最近在 SQLite 中遇到了 GLOB 子句 我不明白为什么我们需要 GLOB 因为 LIKE 已经就位了 这两个子句都有通配符来表示单个和多个字符 唯一的区别是 GLOB 区分大小写 但这就是全部吗
  • 如何在带有警告的情况下对 data.table 中的组进行采样

    这个问题非常类似于对 data table 中每组内的随机行进行采样 区别在于一个细微之处 我没有足够的声誉来讨论这个问题本身 让我们稍微改变一下 Christopher Manning 的初始数据 gt DT data table a c
  • Bootstrap 的 JavaScript 需要 jQuery 而 jQuery 已经加载

    我在加载时遇到错误Bootstrap库 因为它总是给出此错误 未捕获的错误 Bootstrap 的 JavaScript 需要 jQuery 尽管如此 我还是附上了Bootstrap库确定后jQuery已加载但仍然出现错误 我正在使用以下代
  • Typescript:使用私有、公共和无声明类变量之间的区别

    有什么区别 A class foo bar string B class foo private bar string C class foo public bar string 显然我可以使用以下命令在所有三种情况下访问 bar var
  • 实施键盘快捷键

    我目前使用的是onKeyDown事件和一个if else创建键盘快捷键的语句 if Keyboard Modifiers ModifierKeys Shift ModifierKeys Shift e Key Key Tab else if
  • MUI v5 + Storybook:主题和字体系列在 Storybook 中不起作用

    我遇到一个问题 MUI 主题在 Codesandbox 中有效 但在 Storybook 中无效 演示展示它在没有故事书的情况下工作 https codesandbox io s typescript material ui textfie
  • 使用 devtools::install_github() 安装无法检测构建工具

    这是我第一次尝试下载 Github 包 在 MacOS Big Sur v11 2 1 上使用 RStudio v1 2 5033 时遇到了一些问题 最初 运行时 library devtools devtools install gith
  • 在Python中将分钟转换为HH:MM格式[重复]

    这个问题在这里已经有答案了 首先 我想指出我是Python的初学者 我的问题是我不知道在 Python 中将分钟转换为 HH MM 格式的正确方法是什么 任何帮助表示赞赏 Use the divmod 功能 02d 02d format d
  • 如何从授权的 access_token 创建 GoogleCredential?

    我有一个像这样的 OAuth2 令牌 access token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx expires in 3600 refresh token xxxxxxxxxxxxxxx
  • 客户端已断开连接

    我在 WebAPI 日志中收到以下错误 System Web HttpException 0x800703E3 客户端已断开连接 在 System Web Hosting IIS7WorkerRequest EndRead IAsyncRe
  • 如何使用 winapi 了解 Windows 文件系统中的文件何时以及哪些文件被更改

    我为教育目的制作了具有间谍软件功能的程序 我需要在程序中知道文件系统何时更改文件以及正在更改哪些文件 我怎样才能在 C 中做到这一点 在 Windows 上 查看SHChangeNotifyRegister 它不仅告诉您发生了何种类型的更改
  • 如何连接Heroku Redis TLS节点?

    我似乎无法在 Node 上使用 TLS 连接到 Heroku Redis 这些文档并没有多大帮助 https devcenter heroku com articles secure heroku redis 有人有一个有效的例子吗 我应该
  • Markdown 将 JavaScript 中的双星号转换为粗体文本

    我正在尝试制作自己的可降价文本区域 就像 Stackoverflow 所做的那样 目标是让人们能够打字 blah blah 在文本区域中 并在 div 中输出 span style font weight bold blah blah sp
  • PHP:对象分配给静态属性,这是非法的吗?

    将某个对象分配给静态属性是非法的吗 我在下面的代码中收到 HTTP 500 错误 require once class linkedlist php class SinglyLinkedlistTester public static ll
  • 创建自定义 TSetProperty 属性编辑器

    我正在尝试为某些自定义组件创建自定义属性编辑器 自定义属性编辑器旨在编辑一些设置属性 例如 type TButtonOption boOption1 boOption2 boOption3 TButtonOptions set of TBu
  • 在 VB.NET 字符数组中添加“c”有什么作用?

    我想使用 String 方法 IndexOfAny 来检查指定字符串中是否存在字符 我在网上找到的使用 IndexOfAny 方法的示例在使用 VB NET 时在字符数组中的每个字符后面包含一个 c 然而 当我查看 VB NET 中简单字符
  • 无锁同步

    我的问题与多线程无锁同步有关 我想知道以下内容 实现这一目标的一般方法是什么 我在某处读到过有关 LockFreePrimitives 的内容 如 CompareAndExchange CAS 或 DoubleCompareAndExcha
  • 相关模型的每个实例的活动管理范围

    我对动态活动管理范围有疑问 我试图为我的应用程序中 项目 的每个 经理 创建一个范围 但是 当创建新的经理 或分配给项目 时 范围似乎不会更新 但如果我重新启动服务器 它们会更新 所以代码本身 有效 但显然不是按照我希望的方式 我是一个 r
  • Cert-Manager 证书续订流程 - 如何执行?

    我在用cert manager v0 10 0从其安装舵图 我在用kong就像入口控制器来管理入口操作 所以我创建了一个ClusterIssuer资源 以便可以通过 kong ingress 控制器从 Ingress 资源联系它 The C