Kubernetes安装之二:根证书生成

950 阅读1分钟

       根证书是所有证书的基础,后面的证书都是根据此证书而来(其实Kubernetes难就难在证书和授权,理解起来不容易),centos默认自带的1.5.2默认不采用证书,就会简单得多。

1.准备证书生成工具

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo

2.生成根证书

准备证书文件,设置5年有效期

cd /etc/ssl/
cat > /etc/ssl/ca-config.json <<EOF
{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "kubernetes": {
        "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ],
        "expiry": "87600h"
      }
    }
  }
}
EOF

cat > /etc/ssl/ca-csr.json <<EOF
{
  "CN": "kubernetes",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "ChengDu",
      "L": "ChengDu",
      "O": "k8s",
      "OU": "dessler"
    }
  ]
}
EOF

cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

  • 说明:
  • signing:表示该证书可用于签名其它证书,生成的pem 证书中CA=TRUE
  • server auth:表示 client 可以用该该证书对 server 提供的证书进行验证
  • client auth:表示 server 可以用该该证书对 client 提供的证书进行验证
  • CN:Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name),浏览器使用该字段验证网站是否合法
  • O:Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group)
  • kube-apiserver 将提取的 User、Group 作为RBAC 授权的用户标识;


执行完成以后,当前目录会生成ca根证书,这个证书是后续证书的基础

ls
ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem