美文网首页kubernetes本地部署
1. kubernetes创建跟证书和秘钥

1. kubernetes创建跟证书和秘钥

作者: 一瓶多先生 | 来源:发表于2020-11-08 15:56 被阅读0次

    目录

    00.安装CFSSL

    cfssl和 cfssljson 命令行工具用于提供 PKI Infrastructure 基础设施与生成 TLS 证书。

    Linux

    # 或许你需要先执行 `yum install -y wget` 以安装 wget
    wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
    wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
    chmod +x cfssl_linux-amd64 cfssljson_linux-amd64
    sudo mv cfssl_linux-amd64 /usr/local/bin/cfssl
    sudo mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
    

    验证

    验证 cfssl 的版本为 1.2.0 或是更高

    $ cfssl version
    Version: 1.2.0
    Revision: dev
    Runtime: go1.6
    

    注意:cfssljson 命令行工具没有提供查询版本的方法。

    01.配置CA并创建TLS证书

    我们将使用 CloudFlare's PKI 工具 cfssl 来配置 PKI Infrastructure,然后使用它去创建 Certificate Authority(CA),并为 etcd、kube-apiserver、kubelet 以及 kube-proxy 创建 TLS 证书。

    CA 证书是集群所有节点共享的,只需要创建一个 CA 证书,后续创建的所有证书都由它签名。

    新建 CA 配置文件

    mkdir /root/certificated
    cd /root/certificated
    cfssl print-defaults config > config.json
    cfssl print-defaults csr > csr.json
    # 根据config.json文件的格式创建如下的ca-config.json文件
    # 过期时间设置成了 87600h
    cat > ca-config.json <<EOF
    {
      "signing": {
        "default": {
          "expiry": "87600h"
        },
        "profiles": {
          "kubernetes": {
            "usages": [
                "signing",
                "key encipherment",
                "server auth",
                "client auth"
            ],
            "expiry": "87600h"
          }
        }
      }
    }
    EOF
    

    字段说明

    • ca-config.json:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile;
    • signing:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE
    • server auth:表示client可以用该 CA 对server提供的证书进行验证;
    • client auth:表示server可以用该CA对client提供的证书进行验证;

    创建 CA 证书签名请求

    创建 ca-csr.json 文件,内容如下:

    cat > ca-csr.json << EOF 
    {
      "CN": "kubernetes",
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "ST": "BeiJing",
          "L": "BeiJing",
          "O": "kubernetes",
          "OU": "System"
        }
      ],
        "ca": {
           "expiry": "87600h"
        }
    }
    EOF
    
    • CNCommon Name,kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name);浏览器使用该字段验证网站是否合法;

    • OOrganization,kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group);

    • C: 国家

    • ST: 省份

    • L: 城市

    • OU: 部门或单位名称

    生成 CA 凭证和私钥

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

    结果将生成以下两个文件:

    ca-key.pem
    ca.pem
    

    相关文章

      网友评论

        本文标题:1. kubernetes创建跟证书和秘钥

        本文链接:https://www.haomeiwen.com/subject/nvfqbktx.html