一、创建认证中心(CA)

CFSSL可以创建一个获取和操作证书的内部认证中心。

运行认证中心需要一个CA证书和相应的CA私钥。任何知道私钥的人都可以充当CA颁发证书。因此,私钥的保护至关重要。

1.配置证书生成策略

# cat ca-config.json 
{
  "signing": {
    "default": {
      "expiry": "8760h"
    },
    "profiles": {
      "kubernetes": {
        "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ],
        "expiry": "8760h"
      }
    }
  }
}

这个策略,有一个默认的配置,和一个profile,可以设置多个profile,这里的profile是kubernetes,也可以是其他用途的比如说etcd等。

  • 默认策略,指定了证书的有效期是一年(8760h)
  • kubernetes策略,指定了证书的用途
  • signing, 表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE
  • server auth:表示 client 可以用该 CA 对 server 提供的证书进行验证
  • client auth:表示 server 可以用该 CA 对 client 提供的证书进行验证

2.创建用来生成 CA 证书签名请求(CSR)的 JSON 配置文件

# cat ca-csr.json 
{
  "CN": "kubernetes",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "BeiJing",
      "L": "BeiJing",
      "O": "k8s",
      "OU": "System"
    }
  ]
}
  • CN: Common Name,浏览器使用该字段验证网站是否合法,一般写的是域名。非常重要。浏览器使用该字段验证网站是否合法
  • C: Country, 国家
  • L: Locality,地区,城市
  • O: Organization Name,组织名称,公司名称
  • OU: Organization Unit Name,组织单位名称,公司部门
  • ST: State,州,省

3.生成CA证书和私钥(root 证书和私钥)

ca证书:ca.pem 私钥:ca-key.pem 初始化CA cfssl gencert -initca ca-csr.json | cfssljson -bare ca这个命令会生成运行CA所必需的文件ca-key.pem(私钥)和ca.pem(证书),还会生成ca.csr(证书签名请求),用于交叉签名或重新签名。

[root@master temp]#  cfssl gencert -initca ca-csr.json | cfssljson -bare ca
2018/09/20 09:11:13 [INFO] generating a new CA key and certificate from CSR
2018/09/20 09:11:13 [INFO] generate received request
2018/09/20 09:11:13 [INFO] received CSR
2018/09/20 09:11:13 [INFO] generating key: rsa-2048
2018/09/20 09:11:13 [INFO] encoded CSR
2018/09/20 09:11:13 [INFO] signed certificate with serial number 699701764142099640624355744880845590731160955045
[root@master temp]# ls -lrt
total 20
-rw-r--r-- 1 root root  290 Sep 19 09:43 ca-config.json
-rw-r--r-- 1 root root  208 Sep 19 09:46 ca-csr.json
-rw-r--r-- 1 root root 1359 Sep 20 09:11 ca.pem
-rw------- 1 root root 1675 Sep 20 09:11 ca-key.pem
-rw-r--r-- 1 root root 1001 Sep 20 09:11 ca.csr

注意: 使用现有的CA私钥,重新生成:

```
cfssl gencert -initca -ca-key key.pem ca-csr.json | cfssljson -bare ca
```
使用现有的CA私钥和CA证书,重新生成:
```
cfssl gencert -renewca -ca cert.pem -ca-key key.pem
```

3.1 查看cert(证书信息):

cfssl certinfo -cert ca.pem

3.2 查看CSR(证书签名请求)信息:

 cfssl certinfo -csr ca.csr

4.分发证书

# cp ca.csr ca.pem ca-key.pem ca-config.json /etc/kubernetes/ssl

SCP证书到 node1 和 node2 节点
# scp ca.pem node1:/etc/kubernetes/ssl 
# scp ca.pem node2:/etc/kubernetes/ssl
Copyright © suredandan 2018 all right reserved,powered by GitbookUpdateTime: 2020-04-09 16:42:03

results matching ""

    No results matching ""