美文网首页
Cert Manager 申请 SSL 证书流程及相关概念 -

Cert Manager 申请 SSL 证书流程及相关概念 -

作者: 东风微鸣 | 来源:发表于2023-01-19 10:08 被阅读0次

    2022.3.9 用 cert-manager 申请成功通配符证书 (*.ewhisper.cn), 2022.4.30 该证书距离过期还有 30 天,cert-manager 进行自动续期,但是却失败了。😱😱😱

    然后过了几天,在 2022.5.8, 最终成功了。如下图:

    续期成功的 ewhisper.cn 通配符证书

    正好借着这个情况捋一下 cert-manager 的 SSL 证书申请流程以及过程中涉及到的相关概念。

    中英文对照表

    英文 英文 - K8S CRD 中文 备注
    certificates Certificate 证书 certificates.cert-manager.io/v1
    certificate issuers Issuer 证书颁发者 issuers.cert-manager.io
    ClusterIssuer 集群证书颁发者 clusterissuers.cert-manager.io
    certificate request CertificateRequest 证书申请 certificaterequests.cert-manager.io
    order Order (证书)订单 orders.acme.cert-manager.io
    challenge Challenge (证书)挑战 challenges.acme.cert-manager.io
    SelfSigned 自签名 cert-manager Issuer 的一种
    CA 证书颁发机构 Certificate Authority 的缩写;<br />cert-manager Issuer 的一种
    Vault 金库 cert-manager Issuer 的一种,即 Hashicorp Vault
    Venafi Venafi 在线证书办理服务,目前用的不多。
    External 外部 cert-manager Issuer 的一种
    ACME 自动证书管理环境 Automated Certificate Management Environment 的缩写;<br />cert-manager Issuer, 包括 HTTP01 和 DNS01

    Cert Manager 简介

    cert-manager 在 Kubernetes 集群中添加了证书 (certificates) 和证书颁发者 (certificate issuers) 作为资源类型,并简化了获取、更新和使用这些证书的过程。

    它可以从各种支持的来源签发证书,包括 Let's EncryptHashiCorp VaultVenafi 以及私人 PKI。

    📝Notes:

    常用的主流来源是:Let's Encrypt

    它将确保证书是有效的和最新的,并试图在到期前的一个配置时间内更新证书。

    Issuer(证书颁发者)

    在安装了 cert-manager 之后,需要配置的第一件事是一个证书颁发者,然后你可以用它来签发证书。

    cert-manager 带有一些内置的证书颁发者,它们被表示为在cert-manager.io组中。除了内置类型外,你还可以安装外部证书颁发者。内置和外部证书颁发者的待遇是一样的,配置也类似。

    有以下几种证书颁发者类型:

    • 自签名 (SelfSigned)
    • CA(证书颁发机构)
    • Hashicorp Vault(金库)
    • Venafi (SaaS 服务)
    • External(外部)
    • ACME(自动证书管理环境)
      • HTTP01
      • DNS01

    这里先不做详细介绍,目前我的环境有的证书颁发者示例如下:

    SelfSigned

    如下:

    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      annotations:
        meta.helm.sh/release-name: cert-manager-webhook-dnspod
        meta.helm.sh/release-namespace: cert-manager
      labels:
        app: cert-manager-webhook-dnspod
        app.kubernetes.io/managed-by: Helm
        chart: cert-manager-webhook-dnspod-1.2.0
        heritage: Helm
        release: cert-manager-webhook-dnspod
      name: cert-manager-webhook-dnspod-selfsign
      namespace: cert-manager
    status:
      conditions:
        - lastTransitionTime: '2022-03-01T13:38:53Z'
          observedGeneration: 1
          reason: IsReady
          status: 'True'
          type: Ready
    spec:
      selfSigned: {}
    

    ACME - HTTP01

    如下:

    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      annotations:
        meta.helm.sh/release-name: rancher
        meta.helm.sh/release-namespace: cattle-system
      generation: 2
      labels:
        app: rancher
        app.kubernetes.io/managed-by: Helm
        chart: rancher-2.6.4
        heritage: Helm
        release: rancher
      name: rancher
      namespace: cattle-system
    status:
      acme: {}
      conditions:
        - lastTransitionTime: '2022-03-08T14:34:08Z'
          message: The ACME account was registered with the ACME server
          observedGeneration: 2
          reason: ACMEAccountRegistered
          status: 'True'
          type: Ready
    spec:
      acme:
        preferredChain: ''
        privateKeySecretRef:
          name: letsencrypt-production
        server: https://acme-v02.api.letsencrypt.org/directory
        solvers:
          - http01:
              ingress: {}
    

    ACME - DNS01

    如下:

    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer
    metadata:
      annotations:
        meta.helm.sh/release-name: cert-manager-webhook-dnspod
        meta.helm.sh/release-namespace: cert-manager
      labels:
        app: cert-manager-webhook-dnspod
        app.kubernetes.io/managed-by: Helm
        chart: cert-manager-webhook-dnspod-1.2.0
        heritage: Helm
        release: cert-manager-webhook-dnspod
    status:
      acme:
        lastRegisteredEmail: cuikaidong@foxmail.com
        uri: https://acme-v02.api.letsencrypt.org/acme/acct/431637010
      conditions:
        - lastTransitionTime: '2022-03-01T13:38:55Z'
          message: The ACME account was registered with the ACME server
          observedGeneration: 1
          reason: ACMEAccountRegistered
          status: 'True'
          type: Ready
    spec:
      acme:
        email: cuikaidong@foxmail.com
        preferredChain: ''
        privateKeySecretRef:
          name: cert-manager-webhook-dnspod-letsencrypt
        server: https://acme-v02.api.letsencrypt.org/directory
        solvers:
          - dns01:
              webhook:
                config:
                  secretId: <my-secret-id>
                  secretKeyRef:
                    key: secret-key
                    name: cert-manager-webhook-dnspod-secret
                  ttl: 600
                groupName: acme.imroc.cc
                solverName: dnspod
    

    接下来看看证书的申请流程.

    系列文章

    📚️ 参考文档

    三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

    相关文章

      网友评论

          本文标题:Cert Manager 申请 SSL 证书流程及相关概念 -

          本文链接:https://www.haomeiwen.com/subject/nqfqhdtx.html