溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

kubernetes中CFSSL如何構建本地CA

發(fā)布時間:2021-12-24 16:03:21 來源:億速云 閱讀:184 作者:小新 欄目:大數據

這篇文章給大家分享的是有關kubernetes中CFSSL如何構建本地CA的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一:前言

SSL:Secure Sockets Layer,標準化后叫"TLS",http協議默認情況下是不加密內容的,這樣就很可能在內容傳播的時候被別人監(jiān)聽到,對于安全性要求較高的場合,必須要加密,https就是帶加密的http協議。
消息-->[公鑰]-->加密后的信息-->[私鑰]-->消息

kubernetes中CFSSL如何構建本地CA
kubernetes中CFSSL如何構建本地CA

證書所有組織的信息

  • 公鑰

  • 證書頒發(fā)組織的信息

  • 證書頒發(fā)組織授予的權限,如證書有效期、適用的主機名、用途等

  • 使用證書頒發(fā)組織私鑰創(chuàng)建的數字簽名

每個公鑰都有一個對應的私鑰,后者在證書所有者的管控之下,可以用于對數據進行數字簽名,驗證器可以使用證書中的公鑰對數據進行驗證。如果證書本身包含第三方認證中心的數字簽名,那么只要驗證器信任該第三方,就可以確保證書是合法的。有時候,證書是由中介認證中心簽名,而中介認證中心的證書又是由不同的認證中心簽名。在這種情況下,證書驗證器會沿著這條鏈一直找到它信任的證書。對于認證中心而言,信任鏈模型非常有用,它允許我們將根證書的私鑰離線存儲,只為中介證書簽名。


二:CFSSL構建本地CA

1.創(chuàng)建自己的認證中心
CFSSL具有運行一個認證中心所需的全部功能。雖然CFSSL是為運行內部CA而創(chuàng)建,但它足夠健壯,可以用于公開的受信任CA。
運行認證中心需要一個CA證書(ca.pem)和相應的私鑰(ca-key.pem)。后者是極其敏感的數據。任何知道私鑰的人都可以充當CA頒發(fā)證書。因此,私鑰的保護至關重要。

2. 生成CA證書和私鑰

創(chuàng)建ca-csr.json文件

點擊(此處)折疊或打開

  1. {

  2.     "CN": "kubernetes",

  3.     "key": {

  4.         "algo": "rsa",

  5.         "size": 2048

  6.     },

  7.     "names": [

  8.         {

  9.             "C": "CN",

  10.             "L": "BeiJing",

  11.             "ST": "BeiJing",

  12.             "O": "k8s",

  13.             "OU": "System"

  14.         }

  15.     ]

  16. }


”CN“:Common Name,kube-apiserver 從證書中提取該字段作為請求的?戶名 (User Name);瀏覽器使用該字段驗證網站是否合法
"O":Organization ,kube-apiserver 從證書中提取該字段作為請求?戶所屬的組 (Group);

執(zhí)行命令 cfssl gencert -initca ca-csr.json | cfssljson -bare ca

生成: ca.pem     ca-key.pem   ca.csr(證書簽名請求,用于交叉簽名或重新簽名)

3.配置證書生成策略

配置證書生成策略,讓CA軟件知道頒發(fā)什么樣的證書.創(chuàng)建ca-config.json

點擊(此處)折疊或打開

  1. {

  2. "signing": {

  3.   "default": {

  4.     "expiry": "87600h"

  5.    },

  6.   "profiles": {

  7.      "kubernetes": {

  8.        "usages": [

  9.           "signing",

  10.           "key encipherment",

  11.           "server auth",

  12.           "client auth"

  13.         ],

  14.         "expiry": "87600h"

  15.        }

  16.     }

  17.   }

  18. }

ca-config.jso: 可以定義多個profiles,分別指定不同的過期時間,使用場景等參數,這里我們只定義了kubernetes一個profile
signing : 表示該證書可用于簽名其它證書,生成的ca.pem證書中  CA=TRUE
server auth : 表示client可以使用該CA對server提供的證書進行驗證
client auth : 表示server 可以用該CA對client提供的證書進行驗證

4.證書生成與簽名

截止目前,基于CFSSL的CA已經配置完成,該CA如何頒發(fā)證書呢?CFSSL提供了兩個命令:gencert和sign。gencert將自動處理整個證書生成過程。該過程需要兩個文件,一個告訴CFSSL本地客戶端CA的位置以及如何驗證請求,即config文件,另一個為CSR配置信息,用于填充CSR 即csr文件。

舉例:創(chuàng)建 kubernetes 證書簽名請求?件 kubernetes-csr.json (config文件采用之前的ca-config.json)

點擊(此處)折疊或打開

  1. {

  2.     "CN": "kubernetes",

  3.     "hosts": [

  4.         "127.0.0.1",

  5.         "10.116.137.196",

  6.         "10.116.82.28",

  7.         "10.116.36.57",

  8.         "10.254.0.1",

  9.         "kubernetes",

  10.         "kubernetes.default",

  11.         "kubernetes.default.svc",

  12.         "kubernetes.default.svc.cluster",

  13.         "kubernetes.default.svc.cluster.local"

  14.     ],

  15.     "key": {

  16.     "algo":"rsa",

  17.     "size":2048

  18.     },

  19.     "names": [

  20.         {

  21.             "C": "CN",

  22.             "L": "BeiJing",

  23.             "ST": "BeiJing",

  24.             "O": "k8s",

  25.             "OU": "System"

  26.         }

  27.     ]

  28. }

如果 hosts 字段不為空則需要指定授權使用該證書的 IP 或域名列表,由于該證書后續(xù)被 etcd 集群和 kubernetes master 集群使用,所以上面分別指定了 etcd 集群、 kubernetes master 集群的主機 IP 和 kubernetes 服務的服務 IP(一般是 kube-apiserver 指定的 service-cluster-ip-range 網段的第一個IP,如 10.254.0.1。

hosts 中的內容可以為空,即使按照上面的配置,向集群中增加新節(jié)點后也不需要重新生成證書。

執(zhí)行命令:cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes

生成 kubernetes.csr    kubernetes-key.pem   kubernetes.pem 文件

感謝各位的閱讀!關于“kubernetes中CFSSL如何構建本地CA”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI