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

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. 参考文档

暂无

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/528217.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot 整合 mybatis(配置版)

代码及配置整合 创建实体类,与数据库对应 创建 mapper、service 和 controller @AutowiredUserService userService;@ResponseBody@GetMapping("/user")public com.vazquez.bootstudy.model.User getById(@RequestParam("id") Long id) {return userServ…

计算机网络:数据链路层 - CSMA/CD协议

计算机网络:数据链路层 - CSMA/CD协议 媒体接入控制CSMA/CD协议截断二进制指数退避算法帧长与帧间间隔信道利用率 媒体接入控制 如图所示,这是一根同轴电缆,有多台主机连接到这根同轴电缆上,他们共享这根传输媒体,形成…

LeetCode-347. 前 K 个高频元素【数组 哈希表 分治 桶排序 计数 快速选择 排序 堆(优先队列)】

LeetCode-347. 前 K 个高频元素【数组 哈希表 分治 桶排序 计数 快速选择 排序 堆(优先队列)】 题目描述:解题思路一:哈希表记录出现次数,然后用最小堆取,因为每次都是弹出最小的,剩下的一定是K…

CentOS7安装MySQL8.0教程

环境介绍 操作系统:Centos7.6 MySQL版本: 8.0.27 只要是8.0.*版本,那就可以按照本文说明安装 一、安装前准备 1、卸载MariaDB 安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB。 1.1、查看是否安装mariadb rpm -…

SQL注入利用学习-Union联合注入

联合注入的原理 在SQL语句中查询数据时,使用select 相关语句与where 条件子句筛选符合条件的记录。 select * from person where id 1; #在person表中,筛选出id1的记录如果该id1 中的1 是用户可以控制输入的部分时,就有可能存在SQL注入漏洞…

自媒体内容创作助手:7款必备ai写作工具一览! #学习方法#科技#其他

这些工具不仅可以快速生成高质量的文本内容,还可以根据用户的需求进行个性化定制。它们可以帮助我们节省大量的时间和精力,让我们更加专注于创意和细节的打磨。本文将为大家详细介绍几个AI写作工具,让你在写作领域更上一层楼。 1.七燕写作 这…

【随笔】Git 高级篇 -- 撤销变更 reset | revert(十四)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

uniapp项目问题及解决(前后端互联)

1.路由跳转的问题 uni.navigateTo() 保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面 uni.redirectTo() 关闭当前页面,跳转到应用内的某个页面。 uni.reLaunch&…

探索未来产业:新技术、新商业、新趋势

引言 随着科技的迅速发展和全球经济的不断变化,未来产业已经成为全球关注的焦点之一。未来产业的兴起不仅代表着新的商业机遇,更是对传统产业模式的颠覆和重构。在这个充满挑战和机遇的时代,我们不得不认真思考未来产业的重要性和前景。 未…

STM32之HAL开发——FatFs文件系统移植

FatFs文件系统移植 FatFs 程序结构图 移植 FatFs 之前我们先通过 FatFs 的程序结构图了解 FatFs 在程序中的关系网络 用户应用程序需要由用户编写,想实现什么功能就编写什么的程序,一般我们只用到 f_mount()、f_open()、 f_write()、f_read() 就可以…

在【Cencos7】中安装【Nacos】并适配【PostgreSQL】数据库

在【Cencos7】中安装【Nacos-2.3.0】并适配【PostgreSQL】数据库 安装JDK wget命令下载: wget https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz解压 tar -xzvf jdk-7u80-linux-x64.tar.gz将解压后的目录移动到/opt下 sudo mv jdk…

unity_Button:单击的三种实现方式

1.针对特定单个按钮 此代码直接绑定到button上面无需其他操作 using UnityEngine; using UnityEngine.UI;public class PrintHelloOnButtonClick : MonoBehaviour {private Button button;void Start(){// 获取当前GameObject上的Button组件button GetComponent<Button&g…

【Redis系列】Spring Boot 集成 Redis 实现缓存功能

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

[C语言]——动态内存管理

目录 一.为什么要有动态内存分配 二.malloc和free 1.malloc 2.free 三.calloc和realloc 1.calloc 2.realloc 3.空间的释放​编辑 四.常见的动态内存的错误 1.对NULL指针的解引用操作 2.对动态开辟空间的越界访问 3.对非动态开辟内存使用free释放 4.使用free释放⼀块…

嘉轩智能工业科技诚邀您参观2024第13届生物发酵展

参展企业介绍 自2005年成立以来&#xff0c;嘉轩一直致力于工业智能永磁滚筒的研发、制造及销售&#xff0c;具有十多年的从业经验&#xff0c;公司主营产品包括工业智能永磁滚筒、机电智能诊断、工业智能电机等&#xff0c;高效智能自驱动永磁滚筒为我公司目前主导产品&#x…

【C++】——list的介绍及使用 模拟实现

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.…

CSS导读 (Emmet语法)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 续&#xff1a;七、Chrome调试工具 一、Emmet语法 1.1 快速生成HTML结构语法 1.2 快速生成CSS样式语法 &…

从概念到实践:揭开枚举与联合体在数字化创新时代的神秘面纱

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看&#xff0c;已成习惯 创作不易&#xff0c;多多支持&#xff01; 在编程的世界中&#xff0c;枚举和联合体是两种非常基础且重要的数据结构。它们各自具有独特的特点和用途&#xff0c;为程序员提供…

【人工智能】AI赋能城市交通 未来城市的驱动力

前言 随着城市化进程的不断加速&#xff0c;交通拥堵、环境污染等问题日益凸显&#xff0c;人们对交通系统的效率和可持续性提出了更高的要求。在这样的背景下&#xff0c;智能交通技术正成为改善城市交通的重要驱动力。本文将探讨智能交通技术在解决城市交通挑战方面的应用和未…

算法打卡26

今日任务&#xff1a; 1&#xff09;332.重新安排行程 2&#xff09;51.N皇后 3&#xff09;37.解数独 332.重新安排行程 题目链接&#xff1a;332. 重新安排行程 - 力扣&#xff08;LeetCode&#xff09; 给定一个机票的字符串二维数组 [from, to]&#xff0c;子数组中的两个…