当我们使用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。

 

posted on 2020-07-27 20:37  橙子不秃头  阅读(954)  评论(0编辑  收藏  举报