本頁說明如何產生預先共用金鑰 (PSK),並使用該 PSK 建立驗證密鑰。
PSK 是共用的密碼,可用於驗證及加密兩部裝置之間的通訊內容。這是對稱式加密的一種形式。
事前準備
如要建立密鑰,您必須具備必要的 Identity and Access 角色:
- VPN 管理員:具備所有 VPN 相關資源的讀寫權限。請機構 IAM 管理員授予您 VPN 管理員 (
vpn-admin
) 角色。 - VPN 檢視者:具備所有 VPN 相關資源的讀取權限。請要求機構 IAM 管理員授予您 VPN 檢視者 (
vpn-viewer
) 角色。 - 詳情請參閱「角色定義」。
產生 PSK
請使用下列方法產生高強度的 32 字元預先共用金鑰。
OpenSSL
如要進一步瞭解 OpenSSL,請參閱 https://www.openssl.org/。 在 Linux 或 macOS 系統上執行下列 OpenSSL 指令:
openssl rand -base64 24
/dev/urandom
在 Linux 或 macOS 系統上,您也可以使用 /dev/urandom
做為虛擬隨機來源,產生預先共用金鑰:
在 Linux 或 macOS 上,將隨機輸入內容傳送至
base64
:head -c 24 /dev/urandom | base64
透過雜湊函式 (例如
sha256
) 傳遞隨機輸入內容:使用 Linux 電腦:
head -c 4096 /dev/urandom | sha256sum | cut -b1-32
在 macOS 上執行下列操作:
head -c 4096 /dev/urandom | openssl sha256 | cut -b1-32
JavaScript
您也可以將 JavaScript 和 W3C Web Cryptography API 搭配使用,在文件中直接產生預先共用金鑰。詳情請參閱 https://www.w3.org/TR/WebCryptoAPI/#Crypto-method-getRandomValues
這個 API 使用的 Crypto.getRandomValues()
方法詳情請參閱:https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues,這個方法會以高強度加密的方式產生預先共用金鑰。
下列程式碼會建立 24 個隨機位元組的陣列,然後將這些位元組進行 Base64 編碼,產生 32 個字元的隨機字串:
var a = new Uint8Array(24);
window.crypto.getRandomValues(a);
console.log(btoa(String.fromCharCode.apply(null, a)));
建立密鑰
在平台命名空間中,使用 PSK 金鑰建立密鑰:
kubectl --kubeconfig MANAGEMENT_API_SERVER create secret -n platform generic PSK_NAME --from-literal=psk=PSK
更改下列內容:
MANAGEMENT_API_SERVER
:區域 API 伺服器的 kubeconfig 路徑。如果您尚未在目標區域中為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。PSK_NAME
:PSK 金鑰的名稱。PSK
:PSK 金鑰的值。