K8s集群相關證書


近期涉及到了容器雲集群證書過期的問題,故整理了一下證書相關的內容,k8s各證書作用待梳理

 

加密算法分為:對稱加密和非對稱加密
對稱加密:加解密使用的密鑰相同
非對稱加密:使用成對出現的密鑰,分別為公鑰和私鑰,同時遵守以下規則
1-使用公鑰加密的數據只有對應的私鑰才能解開
2-使用私鑰加密的數據只有對用的公鑰才能解開
3-如果可以用公鑰解密,則必然是對應的私鑰加的密
4-如果可以用私鑰解密,則必然是對應的公鑰加的密

對稱加密(DES、AES):
假設S數據發送方,R為數據接收方,K0為對稱加密的密鑰
使用對稱加密傳輸數據:R生成K0,因為對稱加密使用同一密鑰K0加解密,R需要將K0傳送給S用於加密數據,在傳送密鑰K0的過程就存在K0被截獲的可能,進而導致K0加密的數據泄漏。對稱加密簡單高效。

非對稱加密(RSA):
假設S數據發送方,R為數據接收方,K1為非對稱加密的公鑰,K2為非對稱加密的私鑰
一、安全傳輸數據:R生成K1和K2,其中K1作為私鑰自己保存,K2作為公鑰發送給S,即使R傳送K2給S的時候被竊取也沒有影響,因為公鑰K2原本允許被多人持有的,誰想安全發送數據給R都可以持有R生成的公鑰K2,當S使用K2加密數據后,即使數據傳輸過程中被截獲,根據上述非對稱加密遵守的規則,由於數據只能私鑰才能解且私鑰只有R自己保存,數據也不會泄漏。非對稱機密效率低。
二、對信息進行數字簽名:S生成K1和K2,其中K1作為私鑰自己保存,K2作為公鑰發送給R。例如S想發送一個公告,S可以使用k1加密公告內容,發出的數據就能被R解開,也即驗證了數據確實是S發過來的沒有被篡改過,因為K2既然能解開,數據必然是K1加密的,而K1只有S持有,S不能抵賴。
非對稱加密可以用於安全傳輸數據和對信息簽名。

數字證書:
對於上述非對稱加密的過程,仍然存在一個問題,比如在上述一過程中,發送方S收到的公鑰確實是接收方R生成的(雖然公鑰被其他人知道無所謂,但這個公鑰得確保是R生成的):即可能一開始就存在假冒的接收方Rf自己生成私鑰Kf1和公鑰Kf2,並把Kf2發給發送方S,從此S就和Rf保持通信了。這種情況的根本問題就是:發送方S如何確保接收到的公鑰是由真正的發送方R發過來的而不是假冒的Rf,這個時候數字證書就引入了。


1.生成私鑰:
openssl genrsa -out testprivate.key 1024

2.利用私鑰生成對應的公鑰
openssl rsa -in testprivate.key -pubout -out testpublic.pem

3.CA機構介入生成證書
證書包含的內容:請求證書者的公鑰、證書的所有者、證書的發布機構和有效期

3.1利用私鑰生成證書請求
openssl req -key test.key -new -out testcertificate.req

3.2將證書請求給權威機構CA,CA將利用自己獨有的私鑰對證書請求簽名
openssl x509 -req -in testcertificate.req -CA cacertificate.pem -CAkey caprivate.key -out testcertificate.pem

3.3查看CA簽名之后的證書內容
openssl x509 -in testcertificate.pem -noout -text

這個時候S不會從R得到一個公鑰,而是會得到一個證書C,C中有個發布機構CA,S只要得到這個發布機構 CA 的公鑰,去解密R發過來的證書的簽名內容,如果解密成功了,Hash也對的上,就說明R的公鑰沒有啥問題。此時即使有個假冒的Rf也向你發送一個證書Cf,Cf是沒有被真正的CA的私鑰簽發的(比如假冒服務器自己生成公私鑰來簽發證書),這個時候利用Cf證書里面的CA機構的公鑰解密證書簽名內容,就無法解密了。

上面說道,S要得到這個發布機構CA的公鑰,那要怎么確定CA的公鑰就是對的呢
還是回到了一開始非對稱加密過程中,S如何得到正確的R的公鑰這個問題:CA 的公鑰也需要更牛的 CA 給它簽名,然后形成 CA 的證書。要想知道某個 CA 的證書是否可靠,要看 CA 的上級證書的公鑰,能不能解開這個 CA 的簽名。就像你不相信區公安局,可以打電話問市公安局,讓市公安局確認區公安局的合法性。這樣層層上去,直到全球皆知的幾個著名大 CA,稱為 root CA,做最后的背書。通過這種層層授信背書的方式,從而保證了非對稱加密模式的正常運轉。

注意:
1.上述過程只描述了S利用R生成的公私鑰安全傳輸數據給R,R回復的信息仍然可以被截獲泄漏,這需要R利用S生成的公私鑰來安全傳輸數據給S,既這個是上述過程的逆過程。
2.為了兼顧對稱加密的高效和非對稱加密的安全,通常做法如HTTPS是先使用 非對稱加密的方式 傳輸 對稱加密的密鑰,之后使用 對稱加密的密鑰 加密數據
3.瀏覽器訪問https時,如果server端證書不是被公認權威機構簽名的,比如自簽證書,就會出現非安全鏈接提示。

 

參考鏈接:

https://songlee24.github.io/2015/05/03/public-key-and-private-key/

https://zhuanlan.zhihu.com/p/36832100


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM