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/ ...
随机推荐
- 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2022)-SGCL-DTI:用于DTI预测的监督图协同对比学习
14.(2022.5.21)Bioinformatics-SGCL-DTI:用于DTI预测的监督图协同对比学习 论文标题: Supervised graph co-contrastive learni ...
- .NET中的拦截器filter的使用
拦截器的使用 使用场景分析 我们先想像一个场景,就是程序员开发软件,他是怎么工作的呢?我们都知道,普通的程序员只需要根据需求文档开发相应的功能即可,他不用和客户谈论软件需求,不用理会软件卖多少钱,他要 ...
- IPython的使用技巧
?打印IPython简介 在IPython中直接输入?,可以打印出IPython的功能介绍 object ?内省功能 在变量后面加上?,可以打印出该变量的详细信息.例如图中一个列表对象,打印出该对象的 ...
- maven的下载、安装、配置,idea中配置Maven
下载 下载链接: 点击下载地址 : 找到:对应版本的包下载 安装 下载后的压缩包解压出来,然后将解压后的包放到日常安装软件的位置即安装成功,当然取决于个人意愿,也可以不移动. 打开安装包后的目录结构简 ...
- Datatable 数据源
数据源类型 Datatable可以使用三种基本的JavaScript数据类型作为数据源 数组(Arrays[]) 对象(objects{}) 实例(new myclass()) 目前使用过的为前两种, ...
- Oracle用户创建及删除
偶尔会用到,记录.分享. 1. Oracle用户创建 #创建用户表空间create tablespace $username datafile '/u01/app/oracle/oradata/ufg ...
- beego-orm-sqlite
dao.go ``` package daoimport ( "fmt" "github.com/astaxie/beego/orm" "html&q ...
- gdb不能使用mac
先说问题:1.gdb不能使用,重新用homebrew install 了gdb 2.brew装的gdb可以用了,但是等start调试的时候报这些错误: dyld: Library not ...
- mysql 在连接表中的要点
思路:分析需求,分析字段来自哪些表 (连接查询) 确定使用哪种连接查询? 确定交叉点(这两个表中哪些数据是相同的) 判断条件 such as 学生表中的 ...
- layui文件上传+ThinkPHP
1.前端html代码 <div class="layui-form-item"> <label class="layui-form-label" ...