Kubernetes证书相关(CFSSL)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes证书相关(CFSSL)相关的知识,希望对你有一定的参考价值。
参考技术A Github 地址: https://github.com/cloudflare/cfssl
官网地址: https://pkg.cfssl.org/
参考地址: liuzhengwei521
client certificate : 用于服务端认证客户端,例如etcdctl、etcd proxy、fleetctl、docker客户端
server certificate : 服务端使用,客户端以此验证服务端身份,例如docker服务端、kube-apiserver
peer certificate : 双向证书,用于etcd集群成员间通信
根据认证对象可以将证书分成三类:服务器证书 server cert ,客户端证书 client cert ,对等证书 peer cert (表示既是 server cert 又是 client cert ),在kubernetes 集群中需要的证书种类如下:
配置证书生成策略,规定CA可以颁发那种类型的证书
生成CA所必需的文件ca-key.pem(私钥)和ca.pem(证书),还会生成ca.csr(证书签名请求),用于交叉签名或重新签名。
#yyds干货盘点#怎样使用cfssl为etcd颁发SSL证书
1.颁发步骤
加密证书我们可以向证书机构(CA)申请,但是由于我们部署在内网,我们自己自己创建一个CA后给自己颁发证书
(1)创建证书颁发机构
(2)填写表单--写明etcd所在节点的IP
(3)向证书颁发结构申请证书
2.安装cfssl
从cfssl官网中选择对应的cfssl相关可执行程序,https://pkg.cfssl.org/
这里直接使用wget下载保存到/usr/local/bin目录中
# 下载cfssl
wget -c https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl
# 下载cfssl-certinfo
wget -c https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/local/bin/cfssl-certinfo
# 下载cfssljson
wget -c https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson
# 赋予cfssl相关可执行权限
chmod a+x /usr/local/bin/cfssl*
3.颁发证书
(1)创建签证机构(CA)
定义一个ca-csr.json文件,此文件定义签证机构(CA)的相关信息,填入以下内容
"CN": "etcd CA",
"key":
"algo": "rsa",
"size": 2048
,
"names": [
"C": "CN",
"L": "Guizhou",
"ST": "Qiandongnan"
]
使用以下命令使用配置文件中,创建一个签证机构
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
会生成一个ca.pem公钥文件和ca-key.pem私钥文件,这两个文件是CA服务器的证书。接下来我们需要给客户端颁发证书。
(2)定义证书信息
先创建一个ca-config.json文件,定义待颁发证书的基本信息(如有效时间),填写以下内容
"signing":
"default":
"expiry": "87600h"
,
"profiles":
"www":
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
再创建一个server-csr.json文件,定义待颁发证书的详细信息,如下
"CN": "etcd",
"hosts": [
"192.168.56.101",
"192.168.56.102",
"192.168.56.103"
],
"key":
"algo": "rsa",
"size": 2048
,
"names": [
"C": "CN",
"L": "Guizhou",
"ST": "Qiandongnan"
]
(3)向签证机构(CA)申请证书
完成以上步骤,使用以下命令给客户端申请证书
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server
此时,多出客户端两个证书相关文件server.pem和server-key.pem,使用ls *pem
命令查看,可以看到四个pem文件,如下
ca-key.pem ca.pem server-key.pem server.pem
以上是关于Kubernetes证书相关(CFSSL)的主要内容,如果未能解决你的问题,请参考以下文章
#yyds干货盘点#怎样使用cfssl为etcd颁发SSL证书
云原生 | Kubernetes篇自建高可用k8s集群前置概念与操作