2022.3.9 用 cert-manager 申请胜利通配符证书 (*.ewhisper.cn
), 2022.4.30 该证书间隔过期还有 30 天,cert-manager 进行主动续期,然而却失败了。
而后过了几天,在 2022.5.8, 最终胜利了。如下图:
正好借着这个状况捋一下 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 的缩写; cert-manager Issuer 的一种 | |
Vault | 金库 | cert-manager Issuer 的一种,即 Hashicorp Vault | |
Venafi | Venafi 在线证书办理服务,目前用的不多。 | ||
External | 内部 | cert-manager Issuer 的一种 | |
ACME | 主动证书治理环境 | Automated Certificate Management Environment 的缩写; cert-manager Issuer, 包含 HTTP01 和 DNS01 |
Cert Manager 简介
cert-manager 在 Kubernetes 集群中增加了证书 (certificates) 和证书颁发者 (certificate issuers) 作为资源类型,并简化了获取、更新和应用这些证书的过程。
它能够从各种反对的起源签发证书,包含 Let's Encrypt、HashiCorp Vault 和 Venafi 以及私人 PKI。
Notes:
罕用的支流起源是:Let's Encrypt
它将确保证书是无效的和最新的,并试图在到期前的一个配置工夫内更新证书。
解释 cert-manager 架构的高层次概览图
Issuer(证书颁发者)
在装置了 cert-manager 之后,须要配置的第一件事是一个证书颁发者,而后你能够用它来签发证书。
cert-manager 带有一些内置的证书颁发者,它们被示意为在cert-manager.io
组中。除了内置类型外,你还能够装置内部证书颁发者。内置和内部证书颁发者的待遇是一样的,配置也相似。
有以下几种证书颁发者类型:
- 自签名 (SelfSigned)
- CA(证书颁发机构)
- Hashicorp Vault(金库)
- Venafi (SaaS 服务)
- External(内部)
ACME(主动证书治理环境)
- HTTP01
- DNS01
这里先不做具体介绍,目前我的环境有的证书颁发者示例如下:
SelfSigned
如下:
apiVersion: cert-manager.io/v1kind: Issuermetadata: 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-managerstatus: conditions: - lastTransitionTime: '2022-03-01T13:38:53Z' observedGeneration: 1 reason: IsReady status: 'True' type: Readyspec: selfSigned: {}
ACME - HTTP01
如下:
apiVersion: cert-manager.io/v1kind: Issuermetadata: 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-systemstatus: 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: Readyspec: acme: preferredChain: '' privateKeySecretRef: name: letsencrypt-production server: https://acme-v02.api.letsencrypt.org/directory solvers: - http01: ingress: {}
ACME - DNS01
如下:
apiVersion: cert-manager.io/v1kind: ClusterIssuermetadata: 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-dnspodstatus: 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: Readyspec: 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
接下来看看证书的申请流程.
系列文章
- cert-manager TAG
️ 参考文档
- cert-manager - cert-manager Documentation
- 应用 cert-manager 为 dnspod 的域名签发收费证书 | kubernetes 学习笔记 (imroc.cc)
三人行, 必有我师; 常识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.