千家信息网

kubernetes中CFSSL如何构建本地CA

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章给大家分享的是有关kubernetes中CFSSL如何构建本地CA的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一:前言SSL:Secure Sockets Lay
千家信息网最后更新 2025年01月23日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安全错误 数据库的锁怎样保障安全 特朗普网络安全就业 南京峰泰互联网科技有限公司 耒阳软件开发高职 邯郸市委网络安全宣传 主题公园软件开发 拉萨外卖小程序软件开发公司 如何删除数据表中的数据库 科技速递互联网行业前景 服务器做了关键词过滤 宁波中小学网络安全 服务器机箱装nas 比较两个集合差异的数据库 越秀区无源网络技术开发咨询报价 数据库查询实验思考 两台电脑间如何传递数据库 视高协同会议服务器连接不上 陕西智慧党建平台软件开发 网络技术人员力量建设 互联网金融博盈科技 软件提供商和软件开发商区别 酒店餐饮数据库设计 沈阳有哪些软件开发公司 租用数据库 戴尔服务器面板显示报警复位 什么存储引擎无法修改数据库名称 违反网络安全法算违法记录吗 辽宁服务器机柜型号 我国在哪年成立中央网络安全小组 三星 服务器出错 网络安全技术习题答案
0