Cert Manager 申请 SSL 证书流程及相关概念 - 一
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
它将确保证书是有效的和最新的,并试图在到期前的一个配置时间内更新证书。
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
接下来看看证书的申请流程.
系列文章
️ 参考文档
- cert-manager - cert-manager Documentation
- 使用 cert-manager 为 dnspod 的域名签发免费证书 | kubernetes 学习笔记 (imroc.cc)
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
Cert Manager 申请 SSL 证书流程及相关概念 - 一的更多相关文章
- 【原创】免费申请SSL证书【用于HTTPS,即是把网站从HTTP改为HTTPS,加密传输数据,保护敏感数据】
今天公司有个网站需要改用https访问,所以就用到SSL证书.由于沃通(以前我是在这里申请的)暂停了免费的SSL证书之后,其网站推荐了新的一个网站来申请证书,所以,今天因为刚好又要申请一个证书,所以, ...
- 阿里云申请ssl证书配置tomcat访问https
首先去阿里云上面申请ssl证书,免费的,自己百度去. 申请完ok之后会让你下载一个压缩包,里面有四个文件. 在tomcat安装目录下创建cert文件夹,把这四个文件扔进去 在conf/server.x ...
- 使用acme.sh从Let's Encrypt申请SSL证书
Let's Encrypt 简介 Let's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为 ...
- 超详细网站博客域名和二级域名、子域名升级HTTPS免费申请SSL证书配置nginx指南
随着互联网的飞速发展,我们的工作生活已经离不开互联网,HTTP虽然使用极为广泛, 但是存在不小的安全缺陷, 主要是其数据的明文传送和消息完整性检测的缺乏, 而这两点恰好是网络支付,网络交易等网站应用中 ...
- .io域名在申请SSL证书时被坑
注:标题其实与最后内容不符,只是描述一个事实 - 遇到坑了,不代表观点 - io域名坑我. .io后缀的域名是英属印度洋领地的国别域名,由NIC.io(runby Internet Computer ...
- 申请ssl证书报提示caa提示
申请ssl证书报下面提示caa提示,这和dns有关,换一组dns重新申请 send challenge err[acme error 'urn:acme:error:connection': DNS ...
- 腾讯云域名申请+ssl证书申请+springboot配置https
阿里云域名申请 域名申请比较简单,使用微信注册阿里云账号并登陆,点击产品,选择域名注册 输入你想注册的域名 进入域名购买页面,搜索可用的后缀及价格,越热门的后缀(.com,.cn)越贵一般,并且很可能 ...
- 申请SSL证书
1.为什么需要申请SSL证书呢? 因为之前公司网站是通过http访问的,现在要通过https方式访问,前面多了一个s,那就需要SSL证书,用https方式访问的,会加密用户上传和下载的数据,使访问更加 ...
- Linux服务系统申请SSL证书方法
inux主要面向专业性较强的技术人员,如果是WEB站点通常采取PHP语言为主选,可选的服务器环境中有Apache.Nginx.Tomcat这几类为主的框架环境,有的图方便会用一些可视化一键式的控制面板 ...
- 阿里云申请SSL证书 并部署到SpringBoot项目
前提 有一台阿里云的服务器(安装了java环境) 有已经备案的域名,并且域名绑定上面的服务器 申请SSL证书 申请教程:https://blog.csdn.net/yunweifun/article/ ...
随机推荐
- 二进制安装Dokcer
写在前边 考虑到很多生产环境是内网,不允许外网访问的.恰好我司正是这种场景,写一篇二进制方式安装Docker的教程,用来帮助实施同事解决容器部署的第一个难关. 本文将以二进制安装方式,在CentOS7 ...
- python同时识别多张人脸(运用face_recognition)
之前发的博客和网上流传的代码严格来说都只算得上是人脸检测,不能区别人脸,今天来说说真的人脸识别 篇幅所限,就举两张人脸的例子了,本程序需要安装face_recognition 下面是全部源代码: im ...
- python求列表均值,方差,标准差
import numpy as np a = [1,2,3,4,5,6] #求均值 a_mean = np.mean(a) #求方差 a_var = np.var(a) #求标准差 a_std = n ...
- 利用inotify和rsync服务实现数据实时同步
文件定时同步的实现: 利用rsync结合cron计划任务实现: rsync -av --delete /data/ 10.0.0.12:/back -a:保留文件属性 -v:显示过程 -delete: ...
- 13-ORM-更新&删除
一.更改单个数据 修改单个实体的某些字段 1.查: - 通过get()得到要修改的实体对象 2.改: - 通过对象属性的=的方式修改数据 3.保存 - 通过对象.save()保存数据 二.批量 ...
- CentOS 7.9 Related Software Directory
一.CentOS 7.9 Related Software Directory Installing VMware Workstation Pro on Windows Installing Cent ...
- QML 怎么调用 C++ 中的内容?
以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/z_JlmNe6cYldNf11Oad_JQ 先说明一下测试环境 编 ...
- 实验6:开源控制器实———RYU
一.实验目的 1.能够独立部署RYU控制器: 2.能够理解RYU控制器实现软件定义的集线器原理: 3.能够理解RYU控制器实现软件定义的交换机原理. 二.实验环境 Ubuntu 20.04 Deskt ...
- Sublime Text 修改默认语言为Python
Sublime Text 3 修改默认语言为Python 步骤如下 英文:Tools - Developer - New Plugin 中文:工具 - 插件开发 - 新建插件 清空原来内容,用下面的代 ...
- Linux下MMDetection环境配置
1. 准备工作 Linux发行版. Pop!_OS 22.04 LTS (NVIDIA) (Ubuntu衍生) 对Linux进行配置,更改国内镜像源. 安装conda环境. 官网下载安装脚本(bash ...