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ファイルに加えて、他のファイルを削除します。
この証明書は良く生成されます。