Kubernetes CKA課程筆記 10

TLS憑證預先講解

ZONGRU Li
Oct 10, 2021

TLS Certificates:

建立信任安全通信

網路上的溝通都源於Client發動請求(Request)

而Server端(或應用程式或Service)則是接到請求後做出回應

而中間的通路就是網路Internet

如果請求發動是明碼(如帳密)

在請求於Internet傳遞過程中就有可能被駭客截獲

對稱式加密(Symmetric Encryption):

為了解決上述請求在網路傳遞過程中因為是明碼,會有被駭客截獲的問題

所以發展出來的方式就是Client端加密Server端解密

要完成這兩端的加解密則需要共同擁有同一把鑰匙(String key)

這種共用相同鑰匙的機制就是對稱式加密(Symmetric Encryption)

其鑰匙也被稱為對稱式鑰匙(Symmetric key)

過程傳遞在Internet的加密內容就算被駭客截獲,駭客沒有鑰匙也沒辦法解讀

但是這邊就有一個問題,我們總不可能都跟全部的Server都共用鑰匙

所以一個方式就是把鑰匙也從Client遞送過去到Server端

但是就又延伸駭客也能截獲鑰匙的問題!

所以又延伸以下解決方案

非同步加密(Asymmetric Encryption):

首先除了上述的加解密鑰匙保留外,在建立另一組加密與解密鑰匙:

  1. 加密鑰匙
  2. 解密鑰匙

或稱為key-pair

首先Server端建立出加密鑰匙與解密鑰匙對(簡單圖示):

並將其中一把key交給Client(同時可以預想到駭客也能截獲這個key):

接著Client端拿著Server提供的key將前面提到的對稱式鑰匙加密

得到

接著將加密後的對稱式鑰匙交給Server(同理駭客也能拿到):

但是最後能解開的只有Server持有的另一把key-pair鑰匙能解開

但是駭客沒有那個紅色的key-pair,所以解不開

其中Server提供給Client的key又稱作public key

而Server本身持有的另一把(紅色的)key-pair又稱為private key

所以整個鑰匙對又稱為:public private key pair

憑證機構(Certificate Authority):

經過上述機制,駭客已經無法從Client請求中截獲任何有用資訊

演變後駭客反而會去偽裝成假的Server端(網站)等等

並且駭客的網站也會有key-pair讓client端傳遞加密後的對稱式鑰匙

而為了避免這一類問題,憑證(Certificate)就進來了

真正的公司網站會將公鑰(public key)拿去給CA(Certificate Authority)

CA公鑰簽署(signed)並取得CA發佈的憑證(Certificates)

用上述電子憑證以認證公司網站的真實性,證明其公鑰是真的網站發出的

其中這個CA發佈給公司的電子憑證包含以下幾個東西:

  1. 嵌入的公鑰(public key)
  2. 網站名稱(name of website)subdomains
  3. CA簽署(Signature)

所以當Client透過瀏覽器瀏覽公司網站

瀏覽器會去檢視該網站的憑證是否合法,並且有無過期

客戶端憑證(Client Certificates):

而反過來公司網站也要避免駭客假裝一般Client發動請求

所以Client也要有憑證(Certificates)

但是一般Client不用主動做這件事,不然瀏覽網站就變得很麻煩

之後我們會產出一個client端憑證來連線到K8s API Server

信任與非信任CA(Certificate Authorities):

同前面所述,正當公司網站取得正當的CA憑證

但是一般的Client端如何辨別該網站的憑證是有效的?

並且如果有駭客也有做憑證放在網站上(可能不是CA簽發的)

Client端(又或說瀏覽器)要如何辨識?

答案是有一份授權認證的CA憑證清單

多數現代運行系統已將此清單打包其中

所以我們的瀏覽器就包含了這一份清單

所以針對駭客自行簽發的CA憑證,瀏覽器就會提示不認得其憑證

這類自行簽發的CA憑證又稱為自簽憑證(Self-Signed Certificate)

(通常公司內部也會用)

建立Key-pair與憑證請求(Request Certificate):

例如透過openssl工具產生key-pair:

openssl req -new -key great-bank.key -out great-bank.csr -subj "/C=US/ST=NY/O=GreatBankOrg,Inc./CN=great-bank.com

透過上述工具指令可以取得一把私鑰

並且透過該私鑰產生出Certificate Siging Request(CSR)檔

(CSR其中含有public key在裡面)

將上述CSR交給CA單位

CA單位確認內容後就做簽署(通常駭客在這一步申請就會失敗)

最後將簽署後的檔案返還給公司單位使用

而在K8s中針對憑證的發佈,認證,維護,Server key等等有一個統一介面管理:

Public Key Infrastructure(PKI)

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet