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 在 Kubernetes 集群中添加了证书 (certificates) 和证书颁发者 (certificate issuers) 作为资源类型,并简化了获取、更新和使用这些证书的过程。
它可以从各种支持的来源签发证书,包括 Let's Encrypt、HashiCorp Vault 和 Venafi 以及私人 PKI。
Notes:
常用的主流来源是:Let's Encrypt
它将确保证书是有效的和最新的,并试图在到期前的一个配置时间内更新证书。
在安装了 cert-manager 之后,需要配置的第一件事是一个证书颁发者,然后你可以用它来签发证书。
cert-manager 带有一些内置的证书颁发者,它们被表示为在cert-manager.io
组中。除了内置类型外,你还可以安装外部证书颁发者。内置和外部证书颁发者的待遇是一样的,配置也类似。
有以下几种证书颁发者类型:
这里先不做详细介绍,目前我的环境有的证书颁发者示例如下:
如下:
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: {}
如下:
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: {}
如下:
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 编写.
手机扫一扫
移动阅读更方便
你可能感兴趣的文章