当前位置: 首页 > news >正文

CentOS7二进制安装包方式部署K8S集群之CA根证书生成

目录

(一)、安装cfssl工具集

1、创建cfssl工具集相关目录

2、下载cfssl工具集可执行文件

3、cfssl工具集可执行文件赋予执行权限

4、生成默认文件

(1)、生成默认csr证书签名请求文件

(2)、生成默认证书配置文件

(二)、创建etcd集群CA根证书和CA根证书私钥

1、创建etcd集群CA根证书签名请求文件

2、创建etcd集群CA根证书配置文件

3、根据etcd集群CA根证书签名请求文件生成相关证书文件

(三)、创建kubernetes集群CA根证书和CA根证书私钥

 1、创建kubernetes集群CA根证书签名请求文件

2、创建kubernetes集群CA根证书配置文件

3、根据kubernetes集群CA根证书签名请求文件生成相关证书文件


 更多精彩博文详见:

《Linux系统应用运维》专栏总目录(持续更新)

《CentOS二进制安装包方式部署K8S集群之系统初始化》

《CentOS7二进制安装包方式部署K8S集群之CA根证书生成》

《CentOS7二进制安装包方式部署K8S集群之ETCD集群部署》

        为确保安全,Kubernetes集群各组件间、etcd集群间需要使用证书对通信进行加密和认证。CA (Certificate Authority) 是自签名的根证书,用来签名后续创建的其它证书。

          本文主要介绍了在CentOS 7系统下,使用二进制安装包方式部署K8S集群中CA证书创建的相关内容。这里使用cfssl工具来生成自签名证书。cfssl是一个开源的证书管理工具,使用json文件生成证书,相比OpenSSL更方便使用。可在kubernetes集群的任意节点安装cfssl工具,这里在K8s-controller节点上进行操作。

(一)、安装cfssl工具集

1、创建cfssl工具集相关目录

  • 创建安装目录

[root@K8s-controller ~]# mkdir -pv /K8s/cfssl/bin

  • 创建证书存放目录

[root@K8s-controller ~]# mkdir -pv /K8s/cfssl/cert_file

2、下载cfssl工具集可执行文件

  • 下载cfssl工具可执行文件

该工具用于签发证书。

[root@K8s-controller ~]# wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /K8s/cfssl/bin/cfssl --no-check-certificate

  • 下载cfssljson工具可执行文件

该工具将从cfssl工具获得的json格式的输出转化为证书格式的文件进行存储。

[root@K8s-controller ~]# wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /K8s/cfssl/bin/cfssljson --no-check-certificate

  • 下载cfssl-certinfo工具可执行文件

该工具可显示CSR或证书文件的详细信息以及可以对证书进行校验。

[root@K8s-controller ~]# wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /K8s/cfssl/bin/cfssl-certinfo --no-check-certificate

  • 查看下载完成的可执行文件

[root@K8s-controller ~]# ll /K8s/cfssl/bin/

3、cfssl工具集可执行文件赋予执行权限

  • 赋予执行权限

[root@K8s-controller ~]# chmod +x /K8s/cfssl/bin/*

  • 创建软链接(方便直接使用命令而不用加路径)

[root@K8s-controller ~]# ln -s /K8s/cfssl/bin/* /usr/bin/
[root@K8s-controller ~]# ll /usr/bin/cf*

4、生成默认文件

        使用如下两个命令可生成默认配置文件,再根据实际需求修改生成的默认配置文件,可快速生成需要的配置文件。

(1)、生成默认csr证书签名请求文件

命令:cfssl print-defaults csr > ca-csr.json

[root@K8s-controller ~]# cfssl print-defaults csr > /K8s/cfssl/cert_file/ca-csr-defaults.json
[root@K8s-controller ~]# cat /K8s/cfssl/cert_file/ca-csr-defaults.json

配置解释:

  • CN: Common Name,kube-apiserver从证书中提取该字段作为请求的用户名(User Name),浏览器使用该字段验证网站是否合法。一般写的是域名,非常重要。
  • hosts:表示可以使用此csr文件申请的证书的主机名、域名或者IP。为空或者""表示所有的主机名、域名或者IP都可以使用。
  • key:生成证书的算法
  • names:一些其它的属性
  • C: Country,所在国家的简称,只能是国家字母缩写,如CN
  • ST: State/Provice,所在州/省份简称,如Guangxi
  • L: Locality Name,所在地区/城市简称,如Nanning
  • O: Organization Name,组织名称/单位名称(对于SSL证书,一般为网站域名,而对于代码签名证书则为申请单位名称。kube-apiserver从证书中提取该字段作为请求用户所属的用户组(Group)。
  • OU: Organization Unit Name,公司部门名称

kube-apiserver将提取的User Name、Group作为RBAC授权的用户标识。

(2)、生成默认证书配置文件

命令:cfssl print-defaults config > ca-config.json

[root@K8s-controller ~]# cfssl print-defaults config > /K8s/cfssl/cert_file/ca-config-defaults.json
[root@K8s-controller ~]# cat /K8s/cfssl/cert_file/ca-config-defaults.json

配置解释:

  • default字段:默认策略
  • expiry:指定证书的默认有效期,此处为168h
  • profiles字段:指定证书使用场景,此处的"www"、"client"分别是指不同场景的名称,后续签名生成证书及其私钥时需要指定该profile名称。可以定义一个或者多个profiles,分别指定不同的过期时间、使用场景等参数,后续在签名证书时选择使用某个profile即可。
  • expiry:8760h表示证书有效期为一年,如果不写则以default策略中的expiry为准。
  • signing:表示该证书可以用于签名其它证书,生成的ca.pem证书中CA=TRUE。
  • server auth:表示client可以用该该证书对server提供的证书进行验证。
  • client auth:表示server可以用该该证书对client提供的证书进行验证。

(二)、创建etcd集群CA根证书和CA根证书私钥

        

        此处创建etcd集群的CA根证书与CA根证书私钥,后续创建etcd集群相关的证书都由它来签名即可。etcd集群CA根证书创建后命名为etcd-ca.pem,CA根证书私钥创建后命名为etcd-ca-key.pem。

1、创建etcd集群CA根证书签名请求文件

cfssl通过证书签名请求文件可以生成证书和证书私钥。

创建CA根证书签名请求文件/K8s/cfssl/cert_file/etcd-ca-csr.json。

[root@K8s-controller ~]# cat >> /K8s/cfssl/cert_file/etcd-ca-csr.json << EOF
{
        "CN": "etcd-ca",
        "hosts": [
        ],
        "key": {
                "algo": "rsa",
                "size": 2048
        },
        "names": [
                {
                        "C": "CN",
                        "L": "Nanning",
                        "ST": "Guangxi",
                        "O": "k8s",
                        "OU": "lbj"
                }
        ]
}
EOF

2、创建etcd集群CA根证书配置文件

        CA根证书配置文件用于配置CA根证书的使用场景 (profile) 和具体的参数 (usage,过期时间、服务端认证、客户端认证、加密等)。后续在签名生成其它证书文件时,可以新增profile场景后,再生成时指定该profile场景。

[root@K8s-controller ~]# cat > /K8s/cfssl/cert_file/etcd-ca-config.json <<EOF
{
    "signing": {
        "default": {
            "expiry": "87600h"
        },
        "profiles": {
            "etcd": {
                "expiry": "87600h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "server auth",
                    "client auth"
                ]
            }
        }
    }
}

EOF

3、根据etcd集群CA根证书签名请求文件生成相关证书文件

        此处会生成三个文件,分别是根证书etcd-ca.pem、根证书私钥etcd-ca-key.pem、证书签名请求etcd-ca.csr(用于交叉签名或重新签名)。

        有了CA根证书文件及CA根证书私钥,就可以用它们来签发其它证书文件了。

[root@K8s-controller ~]# cd /K8s/cfssl/cert_file

[root@K8s-controller cert_file]# cfssl gencert -initca=true /K8s/cfssl/cert_file/etcd-ca-csr.json | cfssljson -bare etcd-ca

[root@K8s-controller cert_file]# ll etcd*

(三)、创建kubernetes集群CA根证书和CA根证书私钥

        此处创建kubernetes集群的CA根证书与CA根证书私钥,后续创建kubernetes集群相关的证书都由它来签名即可。kubernetes集群的CA根证书创建后命名为kubernetes-ca.pem,CA根证书私钥创建后命名为kubernetes-ca-key.pem。

 1、创建kubernetes集群CA根证书签名请求文件

cfssl通过证书签名请求文件可以生成证书和证书私钥。

创建CA根证书签名请求文件/K8s/cfssl/cert_file/kubernetes-ca-csr.json。

[root@K8s-controller ~]# cat >> /K8s/cfssl/cert_file/kubernetes-ca-csr.json << EOF
{
        "CN": "kubernetes-ca",
        "hosts": [
        ],
        "key": {
                "algo": "rsa",
                "size": 2048
        },
        "names": [
                {
                        "C": "CN",
                        "L": "Nanning",
                        "ST": "Guangxi",
                        "O": "k8s",
                        "OU": "lbj"
                }
        ]
}
EOF

2、创建kubernetes集群CA根证书配置文件

        CA根证书配置文件用于配置CA根证书的使用场景 (profile) 和具体的参数 (usage,过期时间、服务端认证、客户端认证、加密等)。后续在签名生成其它证书文件时,可以新增profile场景后,再生成时指定该profile场景。

[root@K8s-controller ~]# cat > /K8s/cfssl/cert_file/kubernetes-ca-config.json <<EOF
{
    "signing": {
        "default": {
            "expiry": "87600h"
        },
        "profiles": {
            "kubernetes": {
                "expiry": "87600h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "server auth",
                    "client auth"
                ]
            }
        }
    }
}
EOF

3、根据kubernetes集群CA根证书签名请求文件生成相关证书文件

        此处会生成三个文件,分别是根证书kubernetes-ca.pem、根证书私钥kubernetes-ca-key.pem、证书签名请求kubernetes-ca.csr(用于交叉签名或重新签名)。

        有了CA根证书文件及CA根证书私钥,就可以用它们来签发其它证书文件了。

[root@K8s-controller ~]# cd /K8s/cfssl/cert_file
[root@K8s-controller cert_file]# cfssl gencert -initca=true /K8s/cfssl/cert_file/kubernetes-ca-csr.json | cfssljson -bare kubernetes-ca

[root@K8s-controller cert_file]# ll kubernetes*


http://www.dtcms.com/a/431224.html

相关文章:

  • 国外网站阻止国内访问怎么做学的网络工程
  • 《UE5_C++多人TPS完整教程》学习笔记60 ——《P61 开火蒙太奇(Fire Montage)》
  • 在wordpress主题后台安装了多说插件但网站上显示不出评论模块wordpress自定义html5
  • 构建AI安全防线:基于越狱检测的智能客服守护系统
  • 树莓派4B下载ubuntu 2504镜像
  • 河北省建设银行网站wordpres做影视网站
  • 电子商务网站建设与管理相关文献wordpress显示最新评论
  • python模块导入冲突问题笔记
  • 红黑树的实现(巨详细!!!)
  • 福州贸易公司网站制作小视频制作
  • 漳州做网站多少钱官方网站后台怎样做超链接
  • 【双指针专题】之移动零
  • 图书馆网站建设教程android studio手机版
  • 网站建设合同报价花果园营销型网站建设
  • 最小二乘问题详解2:线性最小二乘求解
  • Multi-Arith数据集:数学推理评估的关键基准与挑战
  • 基于 Spring Security OAuth2 + JWT 实现 SSO
  • 数智经济时代医疗领域医学影像系统现状与趋势研究:多模态融合技术方向
  • 解读 2025 《高质量数据集 分类指南》
  • 为什么说这个是6dB de-emphasis”(即“6dB去加重”)--Con‘t
  • Eclipse 快捷键
  • 樟木头网站网络安全维护公司
  • 【EE初阶 - 网络原理】网络通信
  • 方案网站有哪些盗用别的公司网站模块
  • 做网站是否要去工商备案做网站群
  • Less resolver error:‘~antd/es/style/themes/index.less‘ wasn‘t found.
  • php网站验证码错误网站改版对用户的影响
  • vue中如何实现异步加载组件
  • 网站地图seo石城网站建设
  • 怎么防止网站被镜像wordpress seo 主题