K8S自己署名証明書TLS

TLSの自己署名証明書

通信に使用されるTLS証明書、証明書K8S必須成分です。

ステップ1:証明書生成ツールのcfsslをインストールします。

インストールツールを保持するディレクトリを作成するには、このニーズに先立ちmkdir ssl、このツールは、後に、それぞれのディレクトリに移動インストールされます。管理が簡単

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-certinfo_linux-amd64 cfssljson_linux-amd64 cfssl_linux-amd64 
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo

インストールされていない場合はwgetコマンドの実装では、このツールのwgetコマンドが存在しないよう指示されます。

//执行命令安装wget工具
yum install -y wget

ステップ2:コマンドcfsslツールのヘルプを表示するcfsslの-helpを使用します

第三段階:証明書cfsslを生成するためのツールを使用します

彼らのニーズに合わせて文書に応じて変更することができ、設定ファイルを生成します

証明書の生成CA-config.json

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

csr.jsonファイルを生成

CA-csr.json証明書ファイルの生成

cfssl print-defaults csr > ca-csr.json
//修改内容为如下:
{
    "CN": "kubernetes",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Chengdu",
            "ST": "Chengdu",
             "O": "k8s",
            "OU": "System"
        }
    ]
}

生成CA-key.pem ca.pem。

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

サーバcsr.jsonファイルを生成

cat << EOF | tee server-csr.json
{
    "CN": "kubernetes",
    "hosts": [
    "172.16.163.131",
    "172.16.163.130",   
    "172.16.163.129",
    "kubernetes",
    "kubernetes.default",
    "kubernetes.default.svc",
    "kubernetes.default.svc.cluster",
    "kubernetes.default.svc.cluster.local"
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Chengdu",
            "ST": "Chengdu",
            "O": "k8s",     
            "OU": "System"
        }
    ]
}
EOF

生成server.pem、サーバー-key.pem

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server

上記のコマンドを実行するときに文句を言うのでしょう

与えられた理由

{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "kubernetes": { //应该将ca-config.json文件的profiles改为kubernetes
         "expiry": "87600h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ]
      }
    }
  }
}

管理者-csr.jsonファイルの生成

cfssl print-defaults csr > admin-csr.json

我々は、次の上記管理-csr.jsonを変更する必要があります。

{
    "CN": "admin",
    "hosts": [],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Chengdu",
            "ST": "Chengdu",
            "O": "system:masters",
            "OU": "System"
        }
    ]
}

最後の世代管理者の証明書---管理者-key.pem、admin.pem

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin

プロキシを生成

cfssl print-defaults csr > kube-proxy-csr.json
//将kube-proxy-csr.json修改为如下:
{
    "CN": "system:kube-proxy",
    "hosts": [],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Chengdu",
            "ST": "Chengdu",
        "O": "k8s",
        "OU": "System"
        }
    ]
}
//生成代理证书 kube-proxy-key.pem , kube-proxy.pem
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy

最後に、PEMの外のファイルをフィルタリング.json

ls | grep -v pem

コマンドを使用してls | grep -v pem |xargs -i rm {}PEMファイルに加えて、他のファイルを削除します。

この証明書は良く生成されます。

おすすめ

転載: www.cnblogs.com/jasonboren/p/11483458.html