k8s的ca以及相关证书签发流程

news/2024/7/4 7:44:20 标签: kubernetes, 容器, 云原生

k8s的ca以及相关证书签发流程

  • 1. kube-apiserver相关证书说明
  • 2. 生成CA凭证
    • 1.1. 生成CA私钥
    • 1.2. 生成CA证书
  • 2. 生成kube-apiserver凭证
    • 2.1. 生成kube-apiserver私钥
    • 2.2. 生成kube-apiserver证书请求
    • 2.3. 生成kube-apiserver证书
  • 3. 疑问和思考
  • 4. 参考文档

对于网站类的应用,网站管理员需要向权威证书签发机构(CA)申请证书,这通常需要花费一定的费用,也有非营利的证书签发机构,比如”Let’s Encrypt“可以为用户免费签发证书。但对于Kubernetes这类应用来讲,它通常部署在企业内部,其管理面组件不需要暴露到公网,所以就不需要向外部的证书签发机构申请证书,系统管理员就可以自已签发证书供内部使用。

本文通过介绍部分内部组件的ca证书签发流程,引导相关的证书签发过程。


1. kube-apiserver相关证书说明

本节我们使用简单的例子,介绍一下如何使用openssl签发证书,侧重介绍签发证书流程,具体证书配置还需要管理员根据实际情况填写。以kube-apiserver为例,它的启动参数有3处需要配置证书:

--client-ca-file=/yourdirectory/ca.crt
--tls-cert-file=/yourdirectory/server.crt
--tls-private-key-file=/yourdirectory/server.key

其中

  • ca.crt即CA的证书,通常Kubernetes各个组件都配置相同的CA证书,
  • server.crt即kube-apiserver的证书,它将在与客户端建立连接时发送给客户端,由客户端进行验证
  • server.key即kube-apiserver的私钥,它不会发送给客户端,仅用于解密客户端发送的数据。

为了便于理解,我们假设有两位管理员参与证书签发流程,一位CA管理员负责管理CA的凭证并为他人提供签发证书的服务,一位管理员负责为kube-apiserver申请证书。

整体生成证书的流程如下

生成
生成
生成
生成
生成
生成
生成
生成
生成
生成
生成
生成
生成
ca凭证
ca私钥
ca证书
kube-apiserver凭证
kube-schedule-manager凭证
kube-controller-manager凭证
其他组件凭证
kube-apisever私钥
kube-apiserver证书请求
kube-apiserver证书
kube-schedule-manager私钥
kube-schedule-manager证书请求
kube-schedule-manager证书
kube-controller-manager私钥
kube-controller-manager证书请求
kube-controller-manager证书
其他组件私钥
其他组件证书请求
其他组件证书

2. 生成CA凭证

CA凭证包括一个私钥和证书,私钥由CA机构保存,不会对外公开,证书则是对外公开的。生成证书前面要先为CA机构创建一个私钥。

1.1. 生成CA私钥

使用openssl genrsa 命令便可以生成一个私钥:

openssl genrsa -out ca.key 2048

生成的私钥存在ca.key文件中,可以使用cat命令查看:

# ls
ca.key
# cat ca.key 
-----BEGIN RSA PRIVATE KEY-----
MIIEog...// 省略若干内容
-----END RSA PRIVATE KEY-----

在k8s环境中,应该相同的组件都是用相同的ca证书,从而形成统一的签发认证效果,否则可能会认证不通过

1.2. 生成CA证书

接着使用openssl req命令生成一个证书:

openssl req -x509 -new -nodes -key ca.key -subj "/CN=ca" -days 10000 -out ca.crt

生成的证书存在ca.crt文件中,可以使用openssl x509命令查看:

# openssl x509 -in ca.crt -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
...

在这里插入图片描述
到此为止,CA管理员已经拥有了一个私钥和证书,可以为kube-apiserver签发证书了。

2. 生成kube-apiserver凭证

要申请证书,kube-apiserver管理员需要准备一个证书签发请求(申请书),为此,kube-apiserver管理员需要先为kube-apiserver生成一个私钥。

2.1. 生成kube-apiserver私钥

为kube-apiserver生成私钥与前面为CA生成私钥的方法完全一致,同样可以使用openssl genrsa完成:

openssl genrsa -out server.key 2048

生成的私钥存放于server.key中。

2.2. 生成kube-apiserver证书请求

接着kube-apiserver管理员需要使用kube-apiserver的私钥生成一个证书签发请求,才可以提交给CA管理员进行签发。

使用openssl req -new命令可以创建一个证书请求文件:

openssl req -new -key server.key -out server.csr

创建证书请求文件需要提供私钥,然后根据命令行提示输入相关信息,生成的请求文件存放于server.csr文件中。

2.3. 生成kube-apiserver证书

当kube-apiserver管理员创建好证书请求文件后,即可提次给CA管理员进行证书签发了。CA管理员在签发时 需要使用CA的私钥和证书:

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000

Signature ok这样签发完的证书就会保存在server.crt文件中,可以通过命令查看证书的信息,如过期时间等。

openssl x509 -in apiserver.crt -text -noout

在这里插入图片描述

**关于证书及私钥文件,常常会使用约定俗成的文件名后缀。
*.key: 往往表示私钥文件;
.crt: certificate的缩写,往往表示证书文件;
.csr文件为证书签名请求文件,“Certificate Signing Request”的缩写,该文件内含公钥及公钥所属者信息,用于向CA机构申请签名。

3. 疑问和思考

其他证书的生成过程也可以参考kube-apiserver,整体流程都是相同的

4. 参考文档

暂无


http://www.niftyadmin.cn/n/5478190.html

相关文章

不要抱怨,不如抱 Java 运算符吧 (下篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接…

transfrom怎么实现注意力的。什么是注意力。 Transformer的注意力层

目录 transfrom怎么实现注意力的 01 什么是注意力 02 Transformer的注意力层 transfrom怎么实现注意力的 Transform模型实现注意力的方式主要是通过自注意力(Self-Attention)机制。在Transform中,自注意力机制

转圈游戏——快速幂

目录 题目 思路 代码 题目 思路 每个小朋友移动一次的位置为,移动 q 次的位置则为。那么题目要求移动 ,最后的位置为 。 但 的范围是,而总的移动次数是 。时间复杂度是在,因此是一定不能硬算的,肯定会超时。那么该…

基于Java+SpringBoot+Vue民宿预约管理系统(源码+文档+部署+讲解)

一.系统概述 随着社会的不断进步与发展,人们经济水平也不断的提高,于是对各行各业需求也越来越高。利用计算机网络来处理各行业事务这一概念更深入人心,由于工作繁忙以及其他的原因,到实体店进行预约也是比较难实施的。如果开发一…

如何判断一个linux机器是物理机还是虚拟机

https://blog.csdn.net/qq_32262243/article/details/132571117 第一种方式:dmesg命令 [rootnshqae01adm03 ~]# dmesg | grep -i hypervisor [ 0.000000] Hypervisor detected: Xen PV [ 1.115297] VPMU disabled by hypervisor. 在我的机器上 dmesg也是能够用来判…

【数据结构】顺序表的动态分配(步骤代码详解)

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:数据结构 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…

逆向案例十七(2)——webpack加如果之前发送公钥如何定位参数,基于中国五矿

跳转到9816所在的位置文件后&#xff0c;按同样的方法搜索补充模块最终代码&#xff1a; var yangxin; var windowglobal;(function(A) {function e(e) {for (var n, r, i e[0], o e[1], g e[2], c 0, C []; c < i.length; c)r i[c],Object.prototype.hasOwnProperty…

Redis入门--头歌实验使用Redis构建自动补全组件

自动补全与输入联想功能已经是大多数网站的标配&#xff0c;给表单加入自动补全功能大大节省了用户输入时间&#xff0c;而输入联想功能则起到了预测用户喜好的作用&#xff0c;两个功能都是提升用户体验的利器。 本实训&#xff0c;我们通过实现搜索历史、自动补全和搜索预测三…