1. 程式人生 > 實用技巧 >使用CFSSL工具生成TLS自簽名證書

使用CFSSL工具生成TLS自簽名證書

當我們使用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。