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

news2024/11/24 3:47:21

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.coloradmin.cn/o/1589062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++高级特性:柯里化过程与std::bind(六)

1、柯里化过程 1.1、operator()的引入 现在需要完成这样一个需求:有一个函数每次调用返回的结果不一样。例如:两次调用的返回值都不一样那么就可以达到这种目的 1.1.1、简单点的写法 可以给一个全局的变量(静态变量)&#xff…

交换机与路由器缓冲区:寻找完美大小

*本文系SDNLAB编译自瞻博网络技术专家兼高级工程总监Sharada Yeluri领英 在路由器和交换机中,缓冲区至关重要,可以防止网络拥塞期间的数据丢失。缓冲区到底要多大?这个问题在学术界和工业界一直备受争议。本文探讨了高端路由器中数据包缓冲的…

书生·浦语大模型全链路开源体系-第3课

书生浦语大模型全链路开源体系-第3课 书生浦语大模型全链路开源体系-第3课相关资源RAG 概述在 InternLM Studio 上部署茴香豆技术助手环境配置配置基础环境下载基础文件下载安装茴香豆 使用茴香豆搭建 RAG 助手修改配置文件 创建知识库运行茴香豆知识助手 在茴香豆 Web 版中创建…

荒野奔驰,在泥泞中体验惊心动魄的冒险

从亚利桑那州的金色沙漠到喀尔巴阡山脉的崇山峻岭,在这片无垠的开放世界中,蕴藏着无尽的宝藏与古老的废墟,等待着勇敢者的发现。《远征:泥泞奔驰游戏》作为Saber Interactive打造的又一越野模拟力作,继《雪地奔驰》之后…

记录一次Ubuntu 22.04桌面版安装向日葵的过程

大概花了近一天的时间安装了WIN11和Ubuntu 22.04双系统,中间Ubuntu安装时出现了好几次失败,后来检查可能是下载的iso文件有问题,重新下载一次,刻录到U盘。安装才算成功。 最后的Ubuntu系统信息如下 接着安装向日葵的时候出错了&a…

模组硬件通用|ESD静电释放注意事项

当我们在进行接插件操作或者电路板调试时,有时会出现接口损坏或者电路板上的某个IC芯片失效的情况,原因可能仅仅是手触摸到了IC芯片,ESD(Electro-Static discharge 静电释放)导致了损坏。模组作为一个集成电路板,内部含有不同型号…

003Node.js创建第一个web服务

如果用PHP来编写后端代码,需要用Apache或者Nginx的服务器,来处理客户的请求响应。对于Node.js时,不仅实现了应用,同时还实现了整个HTTP服务器. 安装 Node Snippets插件(编程自带提示) console.log(你好nodejs); //表…

Golang 并发安全Map容器实践

Golang原生Map容器并非支持并发安全,在实际使用的时候很容易导致条件竞争并造成未知问题,本文介绍了在Golang中如何安全的并发访问Map容器。原文: Concurrent-Safe Map Container in Go Georg Bommeli Unsplash 当多个程序同时尝试写入同一个map时&#…

【MATLAB源码-第186期】matlab基于MLE算法的8天线阵列DOA估计仿真,对比粗估计、精确估计输出RMSE对比图。

操作环境: MATLAB 2022a 1、算法描述 第一部分:基本概念与系统设置 方向到达估计(Direction of Arrival, DOA)是信号处理中一项重要的技术,主要用于确定信号的到达方向。这种技术在雷达、无线通信和声纳等领域中有…

PandasAI的应用与实战解析(一):环境安装、运行demo

文章目录 1.源码包下载、明确依赖版本2.安装python依赖3.运行demo 本博客源码仓库地址:gitlab,本篇博客对应01分支python版本为3.10.x 什么是PandasAI?一句话总结的话,PandasAI就是一个结合了Pandas和AI的开源工具,更…

代码随想录阅读笔记-回溯【组合总和II】

题目 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。解集不能包含重复的组…

Pytest精通指南(06)Fixture scope作用域详解

文章目录 前言Scope 作用域写在测试用例函数文件写在conftest.py文件作用域总结验证默认作用域验证执行顺序遵循验证类中的fixture作用域验证重名fixture作用域 前言 从前文中,我们已经知道固件(fixture)的概念、原理、作用域,并且…

TMS320F280049 EPWM模块--PC子模块(5)

下图是PC子模块和其他子模块的联系图。可以看出,PC接收DB的输出,然后处理后给到TZ。 下图是PC子模块的内部框图。可以看到: 1)PC子模块功能可以被bypass; 2)one shot和divider的时钟是epwm时钟的8分频&am…

秋招数据库学习2(20240408-20240412共10道)

由于感觉数据库难度可能暂时面试用不到,就先不刷啦 20240408 1.从不订购的客户 SELECT Name AS Customers FROM Customers C LEFT JOIN Orders O ON C.Id O.CustomerId WHERE CustomerId is nullselect customers.name as Customers from Customers wher…

购物车实现

目录 1.购物车常见的实现方式 2.购物车数据结构介绍 3.实例分析 1.controller层 2.service层 1.购物车常见的实现方式 方式一:存储到数据库 性能存在瓶颈方式二:前端本地存储 localstorage在浏览器中存储 key/value 对,没有过期时间。s…

什么是电子巡查系统?

电子巡检系统,通常又被叫做设备巡检系统,一种利用现代化技术进行设备管理和维护的系统。 通过结合软件应用程序、移动设备和云端服务,设备巡检系统能够实现对设备的全面监测、定位和记录。它使得设备管理人员能够轻松地安排、执行和跟踪设备…

通讯录项目(用c语言实现)

一.什么是通讯录 通讯录是一种用于存储联系人信息的工具或应用程序。它是一种电子化的地址簿,用于记录和管理个人、机构或组织的联系方式,如姓名、电话号码、电子邮件地址和邮寄地址等。通讯录的目的是方便用户在需要时查找和联系他人。 通讯录通常以列…

数据结构(算法)

总结,建议看EXCEL的《算法》页签,不然感觉有点乱 备注原理/步骤时间复杂度空间复杂度串的应用模式匹配简单/暴力O(mn) KMP  O(mn) 树的应用树哈夫曼树1、带权路径长度WPL 2、外部排序-最佳归并树1、哈夫曼树的度,只有0和m(m叉…

Linux——十个槽位,RWX

Linux——RWX 十个槽位 - 表示文件 d 表示文件夹 l 表示软链接 r权,针对文件可以查看文件内容 针对文件夹,可以查看文件夹内容,如ls命令 w权,针对表示可以修改此文件 针对文件夹,可以在文件夹内&#…

深入理解k8s kube-proxy

1、概述 我觉得只要大家知道kube-proxy是用来配置网络规则的而不是转发流量的,真正的流量由iptables/ipvs来转发就可以了。 网络是k8s的一个关键部分。理解k8s中网络组件如何工作可以帮助更好的设计和配置我们的应用。 kube-proxy就是K8s网络的核心组件。它把我们…