当我们使用kubeadm去部署我们的kubernetes集群的时候,证书的自生成和提供是可选的,这个时候我们可以定义生成自己的证书,来控制证书过期的时间,也可以给他加上我们自己的密钥。
1、下载cfssl工具所需要的安装包
1 wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 2 wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 3 wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
2、修改刚刚下载完成的文件的权限
1 chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
3、移动文件到指定目录下完成工具的安装
1 mv cfssl_linux-amd64 /usr/local/bin/cfssl 2 mv cfssljson_linux-amd64 /usr/local/bin/cfssljson 3 mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
4、验证我们是否安装成功
1 cfssl
5、生成配置文件的模板
1 cfssl print-defaults config > config.json
我们可以查看生成的模板如下:
1 [root@Cyun cfssl]# cat config.json 2 { 3 "signing": { 4 "default": { 5 "expiry": "168h" 6 }, 7 "profiles": { 8 "www": { 9 "expiry": "8760h", 10 "usages": [ 11 "signing", 12 "key encipherment", 13 "server auth" 14 ] 15 }, 16 "client": { 17 "expiry": "8760h", 18 "usages": [ 19 "signing", 20 "key encipherment", 21 "client auth" 22 ] 23 } 24 } 25 } 26 }
6、生成证书信息的模板
1 cfssl print-defaults csr > csr.json
我们可以查看到生成的模板如下所示:
1 [root@Cyun cfssl]# cat csr.json 2 { 3 "CN": "example.net", 4 "hosts": [ 5 "example.net", 6 "www.example.net" 7 ], 8 "key": { 9 "algo": "ecdsa", 10 "size": 256 11 }, 12 "names": [ 13 { 14 "C": "US", 15 "L": "CA", 16 "ST": "San Francisco" 17 } 18 ] 19 }
7、修改文件config.json和csr.json我们可以定义自己的证书当中的内容
1 config.json 2 signing====>签名 3 expiry====>过期时间,我们可以通过修改这个字段来更正证书的使用时间 4 5 csr.json 6 CN====>标识的具体的域 7 hosts====>使用这个证书的域名 8 key====>证书加密的方式,一般是RSA 2048 9 names====>证书包含的信息,可以包含国家,地区,公司,部门等等,我们可以在kubeadm中修改对于这部分内容的验证,达到证书的管理控制功能。
8、生成证书
1 cfssl gencert -initca ca-csr.json | cfssljson -bare ca
9、生成证书信息
1 cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server
PS:在需要的时候我们可以把生成的ca.pem和ca-key.pem重命名为ca.crt和ca.key。