CFSSL是CloudFlare开源的一款PKI/TLS工具。CFSSL包含一个命令行工具和一个用于签名,验证并且捆绑TLS证书的HTTP API服务。使用去语言编写。
引用>Github地址:https://github.com/cloudflare/cfssl
官网地址:https://pkg.cfssl.org/
参考地址:liuzhengwei521<代码> curl - s - l - o/bin/cfssl https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 curl - s - l - o/bin/cfssljson https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 curl - s - l - o/bin/cfssl-certinfo https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 chmod + x/bin/cfssl * 代码>集群相关证书类型
<强>客户端证书强>:用于服务端认证客户端,例如etcdctl, etcd代理,fleetctl,码头工人客户端
强>:<强>服务器证书服务端使用,客户端以此验证服务端身份,例如码头工人服务端,kube-apiserver
强>:<强>同行证书双向证书,用于etcd集群成员间通信根据认证对象可以将证书分成三类:服务器证书<代码>服务器证书> 代码,客户端证书<代码>客户端证书> 代码,对等证书<代码>同行cert> 代码(表示既是<代码>服务器证书> 代码又是<代码>客户端证书> 代码),在kubernetes集群中需要的证书种类如下:
<李> <代码> etcd> 代码节点需要标识自己服务的服务器证书,也需要客户端证书与etcd集群其他节点交互,当然可以分别指定2个证书,也可以使用一个对等证书李> <李> <代码> 代码>节大师点需要标识apiserver服务的服务器证书,也需要客户cert连接etcd集群,这里也使用一个对等证书李> <李> <代码> kubectl <代码>/<代码>棉布代码> <代码> kube-proxy> 代码只需要<代码>客户端证书> 代码,因此证书请求中主机字段可以为空李> <李> <代码> kubelet> 代码证书比较特殊,不是手动生成,它由节点节点<代码> TLS引导> 代码向<代码> apiserver> 代码请求,由<代码> 代码>节大师点的<代码> controller-manager> 代码自动签发,包含一个<代码>客户端证书> 代码和一个<代码>服务器证书代码> 李>
创建CA配置文件
配置证书生成策略,规定CA可以颁发那种类型的证书
<代码> vim/opt/ssl/k8sca/ca-config.json { “签署”:{ “默认”:{ “到期”:“87600 h” }, “简介”:{ " kubernetes ": { “用法”:( “签名”, “关键加密”, “服务器身份验证”, “客户端身份验证” ), “到期”:“87600 h” } } } }代码>创建CA证书签名请求
<代码> vim/opt/ssl/k8sca/ca-csr.json { “CN”:“kubernetes”, “关键”:{ “算法”:“rsa”, “大小”:2048 }, “名称”:[ { “C”:“CN”, “L”:“北京”, “O”:“Ctyun”, “圣”:“北京”, “你”:“行动” }) }代码>生成CA和私钥
生成CA所必需的文件ca-key.pem(私钥)和ca.pem(证书),还会生成ca.csr(证书签名请求),用于交叉签名或重新签名。
<代码> $ cd/opt/ssl/k8sca/美元cfssl gencert -initca ca-csr。json | cfssljson光秃秃的ca $ ls ca-config。json ca.csr ca-csr。json ca-key。pem ca.pem 代码>Kubernetes证书相关(CFSSL)