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

cert,manager,申请,ssl,证书,流程,相关,概念 · 浏览次数 : 279

小编点评

**证书申请流程** 1. **创建证书颁发者**:cert-manager 需要配置证书颁发者才能签发证书。 2. **配置证书颁发者**:证书颁发者是证书申请的根源。 3. **设置证书申请参数**:证书申请参数包括证书名称、目的和受众。 4. **提交证书申请**:证书申请会被证书颁发者处理并签发证书。 5. **验证证书**:证书持有者可以验证证书是否已成功签发并生效。 **相关概念** * **证书颁发者**:证书颁发者是证书申请的根源,负责签发证书。 * **证书**:证书是一个加密文件,包含证书的公钥和私钥。 * **证书申请**:证书申请是证书颁发者向证书持有者签发的请求。 * **证书**:证书是签发的证书。 **其他信息** * cert-manager 支持多个证书颁发者,包括自签名 (SelfSigned)CA、Hashicorp Vault、Venafi 和 External。 * cert-manager 在 Kubernetes 集群中添加证书是一个简单且有效的方法,简化了获取、更新和使用证书的过程。 * cert-manager 提供证书申请的日志,可用于调试证书申请过程。

正文

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 的缩写;
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 EncryptHashiCorp VaultVenafi 以及私人 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/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 证书流程及相关概念 - 一相似的内容:

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

2022.3.9 用 cert-manager 申请成功通配符证书 (*.ewhisper.cn), 2022.4.30 该证书距离过期还有 30 天,cert-manager 进行自动续期,但是却失败了。😱😱😱 然后过了几天,在 2022.5.8, 最终成功了。如下图: 正好借着这个情况捋一

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

近期用 cert-manager 申请的通配符证书续期失败了,然后过了几天又成功了。正好借着这个情况捋一下 cert-manager 的 SSL证书申请流程以及过程中涉及到的相关概念。

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

中英文对照表 | 英文 | 英文 - K8S CRD | 中文 | 备注 | | | | | | | certificates | Certificate | 证书 | certificates.cert-manager.io/v1 | | certificate issuers | Issuer

配置Ingress支持HTTPS访问(二):使用cert-manager申请证书

配置Ingress支持HTTPS访问(二):使用cert-manager申请证书,Kubernetes,Docker,Ubuntu ,Ingress,HTTPS,Let's Encrypt,cert-manager,CA,SSL/TLS证书,SSL/TLS证书,ClusterIssuer,Issue...

raksmart服务器部署SSL报错:ERR_CERT_COMMON_NAME_INVALID

背景:raksmart服务器 下篇 部署项目 SSL报错:ERR_CERT_COMMON_NAME_INVALID 安装certbot sudo apt update sudo apt install certbot 安装python3-certbot-nginx插件 sudo apt instal

[转帖]acme How to issue a cert

https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert 1. Single domain: 1) Webroot mode: If you already have a web server running, you s

[转帖]Windows根证书的批量导出和导入

# POWERSHELL批量导出 Get-ChildItem -Path Cert:\LocalMachine\Root\ |ForEach-Object {Export-Certificate -Cert $_ -FilePath ($env:USERPROFILE + "\Desktop\新建文

基于Java Swing和BouncyCastle的证书生成工具

"Almost no one will remember what he had just not interested." - Nobody “几乎没有人会记得他所丝毫不感兴趣的事情。” —— 佚名 0x00 大纲 目录0x00 大纲0x01 前言0x02 技术选型0x03 需求分析目标用户用户故

[转帖]Fiddler抓取Chrome浏览器访问baiud.com报NET::ERR_CERT_COMMON_NAME_INVALID

错误现象 解决方法: 1、Chrome浏览器地址栏中输:chrome://net-internals/#hsts 2、在Query HSTS/PKP domain处搜索www.baidu.com网站, [什么是HSTS呢?它的作用是什么?]点击了解详情(https://blog.csdn.net/q

request to https://registry.npm.taobao.org/cnpm failed, reason: certificate has expired

换华为的,否则会出问题:cnpm confg set registry https://mirrors.huaweicloud.com/repository/npm/ npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm