Kubernetes安裝之二:根證書生成

dessler發表於2019-02-13

       根證書是所有證書的基礎,後面的證書都是根據此證書而來(其實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 
複製程式碼


相關文章