共計 2398 個字符,預(yù)計需要花費 6 分鐘才能閱讀完成。
這篇文章主要介紹“Kubernetes 證書簽發(fā)流程是什么”的相關(guān)知識,丸趣 TV 小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強(qiáng),希望這篇“Kubernetes 證書簽發(fā)流程是什么”文章能幫助大家解決問題。
對于網(wǎng)站類的應(yīng)用,網(wǎng)站管理員需要向權(quán)威證書簽發(fā)機(jī)構(gòu)(CA)申請證書,這通常需要花費一定的費用,也有非營利的證書簽發(fā)機(jī)構(gòu),比如”Let s Encrypt“可以為用戶免費簽發(fā)證書。但對于 Kubernetes 這類應(yīng)用來講,它通常部署在企業(yè)內(nèi)部,其管理面組件不需要暴露到公網(wǎng),所以就不需要向外部的證書簽發(fā)機(jī)構(gòu)申請證書,系統(tǒng)管理員就可以自已簽發(fā)證書供內(nèi)部使用。
本節(jié)我們使用簡單的例子,介紹一下如何使用 openssl 簽發(fā)證書,側(cè)重介紹簽發(fā)證書流程,具體證書配置還需要管理員根據(jù)實際情況填寫。
以 kube-apiserver 為例,它的啟動參數(shù)有 3 處需要配置證書:
--client-ca-file=/yourdirectory/ca.crt
--tls-cert-file=/yourdirectory/server.crt
--tls-private-key-file=/yourdirectory/server.key
其中 ca.crt 即 CA 的證書,通常 Kubernetes 各個組件都配置相同的 CA 證書,server.crt 即 kube-apiserver 的證書,它將在與客戶端建立連接時發(fā)送給客戶端,由客戶端進(jìn)行驗證,server.key 即 kube-apiserver 的私鑰,它不會發(fā)送給客戶端,僅用于解密客戶端發(fā)送的數(shù)據(jù)。
為了便于理解,我們假設(shè)有兩位管理員參與證書簽發(fā)流程,一位 CA 管理員負(fù)責(zé)管理 CA 的憑證并為他人提供簽發(fā)證書的服務(wù),一位管理員負(fù)責(zé)為 kube-apiserver 申請證書。
生成 CA 憑證
CA 憑證包括一個私鑰和證書,私鑰由 CA 機(jī)構(gòu)保存,不會對外公開,證書則是對外公開的。生成證書前面要先為 CA 機(jī)構(gòu)創(chuàng)建一個私鑰。
生成 CA 私鑰
使用 openssl genrsa 命令便可以生成一個私鑰:
# openssl genrsa -out ca.key 2048
Generating RSA private key, 2048 bit long modulus
.....................................................................+++
........................................+++
e is 65537 (0x10001)
生成的私鑰存在 ca.key 文件中,可以使用 cat 命令查看:
# ls
ca.key
# cat ca.key
-----BEGIN RSA PRIVATE KEY-----
MIIEog...// 省略若干內(nèi)容
-----END RSA PRIVATE KEY-----
生成 CA 證書
接著使用 openssl req 命令生成一個證書:
# openssl req -x509 -new -nodes -key ca.key -subj /CN=ca -days 10000 -out ca.crt
生成的證書存在 ca.crt 文件中,可以使用 openssl x509 命令查看:
# openssl x509 -in ca.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
...
到此為止,CA 管理員已經(jīng)擁有了一個私鑰和證書,可以為 kube-apiserver 簽發(fā)證書了。
生成 kube-apiserver 憑證
要申請證書,kube-apiserver 管理員需要準(zhǔn)備一個證書簽發(fā)請求(申請書),為此,kube-apiserver 管理員需要先為 kube-apiserver 生成一個私鑰。
生成 kube-apiserver 私鑰
為 kube-apiserver 生成私鑰與前面為 CA 生成私鑰的方法完全一致,同樣可以使用 openssl genrsa 完成:
# openssl genrsa -out server.key 2048
生成的私鑰存放于 server.key 中。
生成 kube-apiserver 證書請求
接著 kube-apiserver 管理員需要使用 kube-apiserver 的私鑰生成一個證書簽發(fā)請求,才可以提交給 CA 管理員進(jìn)行簽發(fā)。
使用 openssl req -new 命令可以創(chuàng)建一個證書請求文件:
# openssl req -new -key server.key -out server.csr
創(chuàng)建證書請求文件需要提供私鑰,然后根據(jù)命令行提示輸入相關(guān)信息,生成的請求文件存放于 server.csr 文件中。
生成 kube-apiserver 證書
當(dāng) kube-apiserver 管理員創(chuàng)建好證書請求文件后,即可提次給 CA 管理員進(jìn)行證書簽發(fā)了。CA 管理員在簽發(fā)時 需要使用 CA 的私鑰和證書:
# openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000
Signature ok
這樣簽發(fā)完的證書就會保存在 server.crt 文件中。
證書文件后綴
關(guān)于證書及私鑰文件,常常會使用約定俗成的文件名后綴。
*.key:往往表示私鑰文件;
*.crt:certificate 的縮寫,往往表示證書文件;
此外,*.csr 文件為證書簽名請求文件,“Certificate Signing Request”的縮寫,該文件內(nèi)含公鑰及公鑰所屬者信息,用于向 CA 機(jī)構(gòu)申請簽名。
關(guān)于“Kubernetes 證書簽發(fā)流程是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注丸趣 TV 行業(yè)資訊頻道,丸趣 TV 小編每天都會為大家更新不同的知識點。