千家信息网

kubernetes中CFSSL如何构建本地CA

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章给大家分享的是有关kubernetes中CFSSL如何构建本地CA的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一:前言SSL:Secure Sockets Lay
千家信息网最后更新 2025年12月01日kubernetes中CFSSL如何构建本地CA

这篇文章给大家分享的是有关kubernetes中CFSSL如何构建本地CA的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一:前言

SSL:Secure Sockets Layer,标准化后叫"TLS",http协议默认情况下是不加密内容的,这样就很可能在内容传播的时候被别人监听到,对于安全性要求较高的场合,必须要加密,https就是带加密的http协议。
消息-->[公钥]-->加密后的信息-->[私钥]-->消息




证书所有组织的信息

  • 公钥

  • 证书颁发组织的信息

  • 证书颁发组织授予的权限,如证书有效期、适用的主机名、用途等

  • 使用证书颁发组织私钥创建的数字签名

每个公钥都有一个对应的私钥,后者在证书所有者的管控之下,可以用于对数据进行数字签名,验证器可以使用证书中的公钥对数据进行验证。如果证书本身包含第三方认证中心的数字签名,那么只要验证器信任该第三方,就可以确保证书是合法的。有时候,证书是由中介认证中心签名,而中介认证中心的证书又是由不同的认证中心签名。在这种情况下,证书验证器会沿着这条链一直找到它信任的证书。对于认证中心而言,信任链模型非常有用,它允许我们将根证书的私钥离线存储,只为中介证书签名。


二:CFSSL构建本地CA

1.创建自己的认证中心
CFSSL具有运行一个认证中心所需的全部功能。虽然CFSSL是为运行内部CA而创建,但它足够健壮,可以用于公开的受信任CA。
运行认证中心需要一个CA证书(ca.pem)和相应的私钥(ca-key.pem)。后者是极其敏感的数据。任何知道私钥的人都可以充当CA颁发证书。因此,私钥的保护至关重要。

2. 生成CA证书和私钥

创建ca-csr.json文件

点击(此处)折叠或打开

  1. {

  2. "CN": "kubernetes",

  3. "key": {

  4. "algo": "rsa",

  5. "size": 2048

  6. },

  7. "names": [

  8. {

  9. "C": "CN",

  10. "L": "BeiJing",

  11. "ST": "BeiJing",

  12. "O": "k8s",

  13. "OU": "System"

  14. }

  15. ]

  16. }


"CN":Common Name,kube-apiserver 从证书中提取该字段作为请求的?户名 (User Name);浏览器使用该字段验证网站是否合法
"O":Organization ,kube-apiserver 从证书中提取该字段作为请求?户所属的组 (Group);

执行命令 cfssl gencert -initca ca-csr.json | cfssljson -bare ca

生成: ca.pem ca-key.pem ca.csr(证书签名请求,用于交叉签名或重新签名)

3.配置证书生成策略

配置证书生成策略,让CA软件知道颁发什么样的证书.创建ca-config.json

点击(此处)折叠或打开

  1. {

  2. "signing": {

  3. "default": {

  4. "expiry": "87600h"

  5. },

  6. "profiles": {

  7. "kubernetes": {

  8. "usages": [

  9. "signing",

  10. "key encipherment",

  11. "server auth",

  12. "client auth"

  13. ],

  14. "expiry": "87600h"

  15. }

  16. }

  17. }

  18. }

ca-config.jso: 可以定义多个profiles,分别指定不同的过期时间,使用场景等参数,这里我们只定义了kubernetes一个profile
signing : 表示该证书可用于签名其它证书,生成的ca.pem证书中 CA=TRUE
server auth : 表示client可以使用该CA对server提供的证书进行验证
client auth : 表示server 可以用该CA对client提供的证书进行验证

4.证书生成与签名

截止目前,基于CFSSL的CA已经配置完成,该CA如何颁发证书呢?CFSSL提供了两个命令:gencert和sign。gencert将自动处理整个证书生成过程。该过程需要两个文件,一个告诉CFSSL本地客户端CA的位置以及如何验证请求,即config文件,另一个为CSR配置信息,用于填充CSR 即csr文件。

举例:创建 kubernetes 证书签名请求?件 kubernetes-csr.json (config文件采用之前的ca-config.json)

点击(此处)折叠或打开

  1. {

  2. "CN": "kubernetes",

  3. "hosts": [

  4. "127.0.0.1",

  5. "10.116.137.196",

  6. "10.116.82.28",

  7. "10.116.36.57",

  8. "10.254.0.1",

  9. "kubernetes",

  10. "kubernetes.default",

  11. "kubernetes.default.svc",

  12. "kubernetes.default.svc.cluster",

  13. "kubernetes.default.svc.cluster.local"

  14. ],

  15. "key": {

  16. "algo":"rsa",

  17. "size":2048

  18. },

  19. "names": [

  20. {

  21. "C": "CN",

  22. "L": "BeiJing",

  23. "ST": "BeiJing",

  24. "O": "k8s",

  25. "OU": "System"

  26. }

  27. ]

  28. }

如果 hosts 字段不为空则需要指定授权使用该证书的 IP 或域名列表,由于该证书后续被 etcd 集群和 kubernetes master 集群使用,所以上面分别指定了 etcd 集群、 kubernetes master 集群的主机 IP 和 kubernetes 服务的服务 IP(一般是 kube-apiserver 指定的 service-cluster-ip-range 网段的第一个IP,如 10.254.0.1。

hosts 中的内容可以为空,即使按照上面的配置,向集群中增加新节点后也不需要重新生成证书。

执行命令:cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes

生成 kubernetes.csr kubernetes-key.pem kubernetes.pem 文件

感谢各位的阅读!关于"kubernetes中CFSSL如何构建本地CA"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

证书 生成 认证 验证 文件 内容 集群 配置 信息 公钥 字段 加密 中介 命令 数字 数字签名 数据 验证器 运行 不同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 达芬奇恢复数据库初始化失败 江苏省互联网新科技 微信网络安全知识问答答案 网吧网络安全年审指引 怎么搭建代理服务器 邮件服务器ip黑名单 河南优哒网络技术有限公司 中国台湾开源软件开发新报价 我的世界ipad版服务器 厦门pc软件开发公司排名 开始一个事物将产品销售表数据库 国内工业互联网企业东土科技 32g内存服务器 叙述软件开发的需求分析过程 网络安全职业生涯规划路线选择 和平精英充值服务器是什么意思 深圳凡隆网络技术有限公 网络安全宣传周企业稿件 学校网络安全公开课直播 西藏电力数显钟服务器 公司建立数据库要多久 福州城市天空网络技术有限公司 技术推广可以开软件开发费 高陵区开展网络安全事件应急演练 数据库的完整性指的是什么 昆明第三方软件开发 初一网络安全的班会 网络安全台本 软件开发流程图大全 web数据库学习方法
0