2.2 下载 cfssl
在/usr/local/src
下载
cd /usr/local/src
wget https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssl_1.6.1_linux_amd64
wget https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssljson_1.6.1_linux_amd64
wget https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssl-certinfo_1.6.1_linux_amd64
#拷贝文件到/usr/local/bin/
目录下
cp cfssl_1.6.1_linux_amd64 /usr/local/bin/cfssl
cp cfssljson_1.6.1_linux_amd64 /usr/local/bin/cfssljson
cp cfssl-certinfo_1.6.1_linux_amd64 /usr/local/bin/cfssl-certinfo
2.3 赋予执行权限
chmod +x /usr/local/bin/cfssl*
2.4 查看安装结果
cfssl version
结果:
[root@etcd01 src]# cfssl version
Version: 1.6.1
Runtime: go1.12.12
3 TLS 加密实践
3.1 介绍
client certificate
: 用于服务端认证客户端,例如etcdctl、etcd proxy、fleetctl、docker客户端。
server certificate
: 服务端使用,客户端以此验证服务端身份,例如docker服务端、kube-apiserver。
peer certificate
: 双向证书,用于etcd集群成员间通信。
3.2 配置CA并创建TLS证书
仅需要在单个节点上生成相关证书即可,然后再把证书复制到其他节点上。
3.2.1 创建ca配置文件 (ca-config.json)
"ca-config.json"
:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile;
"signing"
:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE;
"server auth"
:表示client可以用该 CA 对server提供的证书进行验证;
"client auth"
:表示server可以用该CA对client提供的证书进行验证;
在 /opt/cfssl/
下创建配置文件
vim ca-config.json
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"etcd": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
3.2.2 创建ca证书签名(ca-csr.json)
“CN”:Common Name,从证书中提取该字段作为请求的用户名 (User Name);浏览器使用该字段验证网站是否合法;
“O”:Organization,从证书中提取该字段作为请求用户所属的组 (Group);
这两个参数在后面的kubernetes启用RBAC模式中很重要,因为需要设置kubelet、admin等角色权限,那么在配置证书的时候就必须配置对了,具体后面在部署kubernetes的时候会进行讲解。
“在etcd这两个参数没太大的重要意义,跟着配置就好。”
创建配置文件