摘要:證書配置大全證書是網絡通信的安全的要素,是現代網絡通信的基本配置。包含一個命令行工具用于簽名,驗證并且捆綁證書的服務。
Kubernetes 證書配置大全
證書是網絡通信的安全的要素,是現代網絡通信的基本配置。各種遠程調用的安全都離不開非對稱加密提供的保障。
下載證書工具cfssl 是 CloudFlare 開源的一款PKI/TLS工具。 CFSSL 包含一個命令行工具(cfssl, cfssljson)用于簽名,驗證并且捆綁TLS證書的 HTTP API 服務。 使用Go語言編寫。與 OpenSSL 相比,cfssl 使用起來更簡單。
Github 地址: https://github.com/cloudflare...
官網地址: https://pkg.cfssl.org/
如果有golang環境,用go安裝很簡單
$ go get -u github.com/cloudflare/cfssl/cmd/cfssl $ go get -u github.com/cloudflare/cfssl/cmd/cfssljson
cfssljson 實用程序
大部分 cfssl 的輸出為 JSON 格式。cfssljson 可以將輸出拆分出來為獨立的key,certificate,CSR 和 bundle文件。該工具需要指定參數,-f 指定輸入文件,后接一個參數,指定生成的文件的基本名稱。如果輸入文件名是 -(默認值),則 cfssljson 從標準輸入讀取。它以下列方式將 JSON 文件中的鍵映射到文件名:
如果指定了cert或certificate, 將生成basename.pem。
如果指定了key 或private_key,則將生成basename-key.pem。
如果指定了csr 或certificate_request,則將生成basename.csr。
如果 指定了bundle, 則將生成basename-bundle.pem。
如果指定了ocspResponse, 則將生成basename-response.der。
您可以傳遞-stdout輸出編碼內容到標準輸出,而不是保存到文件。
cfssl certinfo -cert /etc/kubernetes/ssl/ca.pem |grep not_after cfssl certinfo -cert /etc/kubernetes/ssl/admin.pem |grep not_after cfssl certinfo -cert /etc/kubernetes/ssl/kubernetes.pem |grep not_after cfssl certinfo -cert /etc/kubernetes/ssl/kube-proxy.pem |grep not_after生成新證書
證書分四類
ca.pem - 私有CA根證書
kubernetes.pem - 與 node 通信的,
kube-proxy.pem - k8s 與容器通信的
admin.pem - kubectl 管理用
生成證書請求在生成證書過程中需要有四類文件
*.csr - 證書請求文件,base64格式,有-----BEGIN CERTIFICATE REQUEST-----標識
*csr.json - 證書請求文件,是上面格式的再封裝,便于傳給cfssl,json格式,大括號開始
*-key.pem - 私匙文件,base64格式,有-----BEGIN RSA PRIVATE KEY-----標識
*.pem - 證書文件,base64格式,可以用cfssl certinfo -cert 文件名查看有效期,有-----BEGIN CERTIFICATE-----標識
以上四種文件,前兩類是中間產物,過后可以不保留,后兩個需要配置到系統中 (通常是主從結點的/etc/kubernetes/ssl目錄下)。
中間文件和生成的文件最好放在一起
cat > ca-csr.json << "HERE" { "CN": "kubernetes", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "BeiJing", "L": "BeiJing", "O": "k8s", "OU": "System" } ] } HERE
部分字段說明:
“CN”:Common Name,kube-apiserver 從證書中提取該字段作為請求的用戶名 (User Name);瀏覽器使用該字段驗證網站是否合法;
“O”:Organization,kube-apiserver 從證書中提取該字段作為請求用戶所屬的組 (Group);
其他幾類證書請求類似
用證書請求生成證書cfssl gencert -initca ca-csr.json | cfssljson -bare ca配置證書,使其生效
需要把生成的證書復制到全部 master和 node 結點。
scp *.pem yourname@yournode:/etc/kubernetes/ssl/
在 master 結點上生成~/.kube/config便于kubectl日常交互使用
KUBE_APISERVER="https://192.168.122.100:6443" #這里換成你的 master 結點 IP kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/ssl/ca.pem --embed-certs=true --server=${KUBE_APISERVER} kubectl config set-credentials admin --client-certificate=/etc/kubernetes/ssl/admin.pem --embed-certs=true --client-key=/etc/kubernetes/ssl/admin-key.pem kubectl config set-context kubernetes --cluster=kubernetes --user=admin kubectl config use-context kubernetes ls ~/.kube/config
結點間通信用的證書配置
cd /etc/kubernetes kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/ssl/ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=bootstrap.kubeconfig kubectl config set-credentials kubelet-bootstrap --token=${BOOTSTRAP_TOKEN} --kubeconfig=bootstrap.kubeconfig kubectl config set-context default --cluster=kubernetes --user=kubelet-bootstrap --kubeconfig=bootstrap.kubeconfig kubectl config use-context default --kubeconfig=bootstrap.kubeconfig kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/ssl/ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=kube-proxy.kubeconfig kubectl config set-credentials kube-proxy --client-certificate=/etc/kubernetes/ssl/kube-proxy.pem --client-key=/etc/kubernetes/ssl/kube-proxy-key.pem --embed-certs=true --kubeconfig=kube-proxy.kubeconfig kubectl config set-context default --cluster=kubernetes --user=kube-proxy --kubeconfig=kube-proxy.kubeconfig kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrapbootstrap方式給節點頒發證書
在配置好kubelet-bootstrap.kubeconfig后,重啟結點,結點會向master申請證書。
master結點上運行
kubectl get certificatesigningrequests
會發現以下類似的輸出
NAME AGE REQUESTOR CONDITION node-csr-dAxCUJNZ4 22m kubelet-bootstrap Pending
通過以下命令,授權頒發給節點證書
kubectl certificate approve node-csr-dAxCUJNZ4
通過后正常后會輸出
certificatesigningrequest "node-csr-dAxCUJNZ4" approved
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/32971.html
摘要:年初開始研究,至目前已發表近篇學習筆記。同時,他也是中國社區的活躍者,見證了中國社區的一路成長。經本人授權,從本周開始,中國將轉載他的學習筆記,由淺入深地分享他在學習過程中的收獲。節點包含的組件目前這三個組件需要部署在同一臺機器上。 作者:宋凈超 宋凈超(Jimmy Song),TalkingData 容器技術負責人,微服務和云原生應用布道者。2017 年初開始研究 Kubernete...
摘要:任何知道私鑰的人都可以充當頒發證書。此密鑰允許在中創建任何類型的證書。使用認證中心的私鑰和證書簽名生成機構的證書和私鑰。將在任何機器上工作。它將簡化證書例程,但會增加安全風險。 資源 https://blog.cloudflare.com/i... 官方博客 特性 概念 安裝 下載安裝 wget https://pkg.cfssl.org/R1.2/cfssl_linux-a...
摘要:廣告各版本離線安裝包證書配置生產環境中給配置證書相當重要,如果沒有證書,那么集群很容易被黑客利用而去挖礦什么的。細節問題非常多,一個端口,一個都不要填錯,否則就會各種錯誤包括新加節點要清數據這些小細節問題。 廣告 | kubernetes各版本離線安裝包 etcd 證書配置 生產環境中給etcd配置證書相當重要,如果沒有證書,那么k8s集群很容易被黑客利用而去挖礦什么的。做法非常簡單...
摘要:廣告各版本離線安裝包證書配置生產環境中給配置證書相當重要,如果沒有證書,那么集群很容易被黑客利用而去挖礦什么的。細節問題非常多,一個端口,一個都不要填錯,否則就會各種錯誤包括新加節點要清數據這些小細節問題。 廣告 | kubernetes各版本離線安裝包 etcd 證書配置 生產環境中給etcd配置證書相當重要,如果沒有證書,那么k8s集群很容易被黑客利用而去挖礦什么的。做法非常簡單...
閱讀 1805·2021-11-22 09:34
閱讀 3093·2019-08-30 15:55
閱讀 672·2019-08-30 15:53
閱讀 2058·2019-08-30 15:52
閱讀 3004·2019-08-29 18:32
閱讀 1993·2019-08-29 17:15
閱讀 2398·2019-08-29 13:14
閱讀 3560·2019-08-28 18:05