kubernetes實踐之二:建立TLS證書和金鑰
一:前言
每個Kubernetes叢集都有一個叢集根證書頒發機構(CA)。 叢集中的組件通常使?CA來驗證API SERVER的證書,由API伺服器驗證kubelet客戶端證書等。為了支援這一特點,CA證書包被分發到叢集中的每個節點,並作為一個sercret附加分發到預設service account上。
生成的 CA 證書和秘鑰檔案如下:
ca-key.pem
ca.pem
kubernetes-key.pem
kubernetes.pem
kube-proxy.pem
kube-proxy-key.pem
admin.pem
admin-key.pem
使用證書的元件如下:
etcd:使用 ca.pem、kubernetes-key.pem、kubernetes.pem;
kube-apiserver:使用 ca.pem、kubernetes-key.pem、kubernetes.pem;
kubelet:使用 ca.pem;
kube-proxy:使用 ca.pem、kube-proxy-key.pem、kubeproxy.pem;
kubectl:使用 ca.pem、admin-key.pem、admin.pem;
kube-controller-manager:使用 ca-key.pem、ca.pem
kubernetes叢集節點部署結構:
10.116.137.196 k8s_master
10.116.82.28 k8s_node1
10.116.36.57 k8s_node2
二:安裝CFSSL
三:建立 CA (Certificate Authority)
mkdir /root/ssl
cd /root/ssl
cfssl print-defaults config > config.json
cfssl print-defaults csr > csr.json
config.json
csr.json
# 根據config.json檔案的格式建立如下的ca-config.json檔案
# 過期時間設定成了 87600h
ca-config.json
ca-csr.json
生成 CA 證書和私鑰
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
四:建立 kubernetes 證書
kubernetes-csr.json
生成 kubernetes 證書和私鑰
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes
五: 建立 admin 證書
admin-csr.json
生成 admin 證書和私鑰
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin
六: 建立 kube-proxy 證書
kube-proxy-csr.json
生成 kube-proxy 客戶端證書和私鑰
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy
七:校驗證書
舉例:cfssl-certinfo -cert kubernetes.pem
八:分發證書
將生成的證書和秘鑰檔案(字尾名為 .pem )複製到所有機器的
/etc/kubernetes/ssl 目錄下備用;
mkdir -p /etc/kubernetes/ssl
cp *.pem /etc/kubernetes/ssl
每個Kubernetes叢集都有一個叢集根證書頒發機構(CA)。 叢集中的組件通常使?CA來驗證API SERVER的證書,由API伺服器驗證kubelet客戶端證書等。為了支援這一特點,CA證書包被分發到叢集中的每個節點,並作為一個sercret附加分發到預設service account上。
生成的 CA 證書和秘鑰檔案如下:
ca-key.pem
ca.pem
kubernetes-key.pem
kubernetes.pem
kube-proxy.pem
kube-proxy-key.pem
admin.pem
admin-key.pem
使用證書的元件如下:
etcd:使用 ca.pem、kubernetes-key.pem、kubernetes.pem;
kube-apiserver:使用 ca.pem、kubernetes-key.pem、kubernetes.pem;
kubelet:使用 ca.pem;
kube-proxy:使用 ca.pem、kube-proxy-key.pem、kubeproxy.pem;
kubectl:使用 ca.pem、admin-key.pem、admin.pem;
kube-controller-manager:使用 ca-key.pem、ca.pem
kubernetes叢集節點部署結構:
10.116.137.196 k8s_master
10.116.82.28 k8s_node1
10.116.36.57 k8s_node2
二:安裝CFSSL
點選(此處)摺疊或開啟
-
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
-
chmod +x cfssl_linux-amd64
-
mv cfssl_linux-amd64 /usr/local/bin/cfssl
-
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
-
chmod +x cfssljson_linux-amd64
-
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
-
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
-
chmod +x cfssl-certinfo_linux-amd64
- mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
-
export PATH=/usr/local/bin:$PATH
三:建立 CA (Certificate Authority)
mkdir /root/ssl
cd /root/ssl
cfssl print-defaults config > config.json
cfssl print-defaults csr > csr.json
config.json
點選(此處)摺疊或開啟
-
{
-
"signing": {
-
"default": {
-
"expiry": "168h"
-
},
-
"profiles": {
-
"www": {
-
"expiry": "8760h",
-
"usages": [
-
"signing",
-
"key encipherment",
-
"server auth"
-
]
-
},
-
"client": {
-
"expiry": "8760h",
-
"usages": [
-
"signing",
-
"key encipherment",
-
"client auth"
-
]
-
}
-
}
-
}
- }
csr.json
點選(此處)摺疊或開啟
-
{
-
"CN": "example.net",
-
"hosts": [
-
"example.net",
-
""
-
],
-
"key": {
-
"algo": "ecdsa",
-
"size": 256
-
},
-
"names": [
-
{
-
"C": "US",
-
"L": "CA",
-
"ST": "San Francisco"
-
}
-
]
- }
# 過期時間設定成了 87600h
ca-config.json
點選(此處)摺疊或開啟
-
{
-
"signing": {
-
"default": {
-
"expiry": "87600h"
-
},
-
"profiles": {
-
"kubernetes": {
-
"usages": [
-
"signing",
-
"key encipherment",
-
"server auth",
-
"client auth"
-
],
-
"expiry": "87600h"
-
}
-
}
-
}
- }
點選(此處)摺疊或開啟
-
{
-
"CN": "kubernetes",
-
"key": {
-
"algo": "rsa",
-
"size": 2048
-
},
-
"names": [
-
{
-
"C": "CN",
-
"L": "BeiJing",
-
"ST": "BeiJing",
-
"O": "k8s",
-
"OU": "System"
-
}
-
]
- }
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
四:建立 kubernetes 證書
kubernetes-csr.json
點選(此處)摺疊或開啟
-
{
-
"CN": "kubernetes",
-
"hosts": [
-
"127.0.0.1",
-
"10.116.137.196",
-
"10.116.82.28",
-
"10.116.36.57",
-
"10.254.0.1",
-
"kubernetes",
-
"kubernetes.default",
-
"kubernetes.default.svc",
-
"kubernetes.default.svc.cluster",
-
"kubernetes.default.svc.cluster.local"
-
],
-
"key": {
-
"algo":"rsa",
-
"size":2048
-
},
-
"names": [
-
{
-
"C": "CN",
-
"L": "BeiJing",
-
"ST": "BeiJing",
-
"O": "k8s",
-
"OU": "System"
-
}
-
]
- }
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes
五: 建立 admin 證書
admin-csr.json
點選(此處)摺疊或開啟
-
{
-
"CN": "admin",
-
"hosts": [],
-
"key": {
-
"algo":"rsa",
-
"size":2048
-
},
-
"names": [
-
{
-
"C": "CN",
-
"L": "BeiJing",
-
"ST": "BeiJing",
-
"O": "system:masters",
-
"OU": "System"
-
}
-
]
- }
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin
六: 建立 kube-proxy 證書
kube-proxy-csr.json
點選(此處)摺疊或開啟
-
{
-
"CN": "system:kube-proxy",
-
"hosts": [],
-
"key": {
-
"algo":"rsa",
-
"size":2048
-
},
-
"names": [
-
{
-
"C": "CN",
-
"L": "BeiJing",
-
"ST": "BeiJing",
-
"O": "k8s",
-
"OU": "System"
-
}
-
]
- }
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy
七:校驗證書
舉例:cfssl-certinfo -cert kubernetes.pem
八:分發證書
將生成的證書和秘鑰檔案(字尾名為 .pem )複製到所有機器的
/etc/kubernetes/ssl 目錄下備用;
mkdir -p /etc/kubernetes/ssl
cp *.pem /etc/kubernetes/ssl
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2151773/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- kubernetes實踐之三:ETCD TLS證書叢集安裝TLS
- TLS、SSL、CA 證書、公鑰、私鑰。。。今天捋一捋!TLS
- 遊戲陪玩系統,生成證書和金鑰庫的程式碼分析遊戲
- Kubernetes安裝之二:根證書生成
- 10 建立SSL與RSA證書與金鑰
- 手動驗證 TLS 證書TLS
- kubernetes實踐之八:TLS bootstrappingTLSbootAPP
- kubernetes實踐之二十六:GlusterFS
- kubernetes實踐之二十七:Harbor
- kubernetes實踐之二十:網路原理
- kubernetes實踐之二十二:Pod
- kubernetes實踐之二十四:Service
- Frost :全球TLS證書報告ROSTLS
- SSL/TLS協議原理與證書籤名多種生成方式實踐指南TLS協議
- 使用OpenSSL建立生成CA證書、伺服器、客戶端證書及金鑰伺服器客戶端
- kubernetes實踐之二十三:ReplicationControllerController
- SSL/TLS證書有什麼作用?TLS
- HTTPS加密過程和TLS證書驗證HTTP加密TLS
- SSL證書部署最佳實踐
- K3S TLS證書延長TLS
- kubernetes實踐之二十一:物件與元件簡介物件元件
- openssl提取pfx證書金鑰對
- 在Linux中,如何管理SSL/TLS證書?LinuxTLS
- kubernetes實踐之二十五:儲存卷 PV&PVC
- cad2021序列號和金鑰分享 cad2021序列號和金鑰大全
- kubernetes實戰篇之建立金鑰自動拉取私服映象
- 如何保護SSL證書私鑰安全
- kubernetes實踐之二十九:Kubernetes+Harbor+Gitlab+Jenkins+Maven DevOpsGitlabJenkinsMavendev
- 申請並部署免費的 SSL/TLS 證書TLS
- cad2014序列號和金鑰大全 cad2014序列號和金鑰分享
- 3dmax2020序列號和金鑰是什麼 3dmax所有版本序列號和金鑰大全3D
- 驗證Kubernetes YAML的最佳實踐和策略YAML
- 使用 PHP 生成以太坊錢包和金鑰對PHP
- 建立自簽名根證書-中間證書。
- Kubernetes證書相關(CFSSL)
- 理解加密演算法(三)——建立CA機構,簽發證書並開始TLS通訊加密演算法TLS
- kubernetes實踐之二十八:使用Harbor作為私有映象倉庫
- 證書過期?私鑰洩露?掌控您的證書和私鑰,維護網站安全和聲譽!網站