1、瀏覽器訪問 kube-apiserver 的安全端口 6443 時,提示證書不被信任

這是因為 kube-apiserver 的 server 證書是我們創建的根證書 ca.pem 簽名的,需要將根證書 ca.pem 導入操作系統,並設置永久信任
對於 windows 系統使用以下命令導入 ca.pem
1)在運行界面輸入mmc,打開證書管理器


2)選擇文件---添加/刪除管理單元---選擇證書---點擊添加---選擇我的用戶賬戶---點擊完成

3)選擇受信任的根證書頒發機構----右鍵點擊證書-----選擇所有任務------選擇導入


下一步選擇根證書文件

下一步選擇將所有的證書都放入下列存儲

下一步完成后可以在受信任的根證書頒發機構上找到導入的根證書

再次訪問 [apiserver 地址](https://192.168.1.201:6443/),已信任,但提示 401,未授權的訪問

2、我們需要給瀏覽器生成一個 client 證書,訪問 apiserver 的 6443 https 端口時使用
這里使用部署 kubectl 命令行工具時創建的 admin 證書、私鑰和上面的 ca 證書,創建一個瀏覽器可以使用 PKCS#12/PFX 格式的證書
openssl pkcs12 -export -out admin.pfx -inkey admin-key.pem -in admin.pem -certfile ca.pem
將創建的 admin.pfx 導入到系統的證書中,對應window10系統
1)在運行界面輸入mmc,打開證書管理器


2)選擇文件---添加/刪除管理單元---選擇證書---點擊添加---選擇我的用戶賬戶---點擊完成

3)選擇個人----右鍵點擊證書-----選擇所有任務------選擇導入---選擇admin.pfx證書---下一步

選擇創建admin.pfx是設置的密碼(如果創建時沒有設置,直接下一步)----下一步---完成
完成后可在個人---證書看到剛導入的證書

重啟瀏覽器**,再次訪問 [apiserver 地址](https://192.168.1.201:6443/),提示選擇一個瀏覽器證書,這里選中上面導入的 admin.pfx


這一次,被授權訪問 kube-apiserver 的安全端口
## 客戶端選擇證書的原理
1. 證書選擇是在客戶端和服務端 SSL/TLS 握手協商階段商定的;
1. 服務端如果要求客戶端提供證書,則在握手時會向客戶端發送一個它接受的 CA 列表;
1. 客戶端查找它的證書列表(一般是操作系統的證書,對於 Mac 為 keychain),看有沒有被 CA 簽名的證書,如果有,則將它們提供給用戶選擇(證書的私鑰);
1. 用戶選擇一個證書私鑰,然后客戶端將使用它和服務端通信;
