本頁說明如何產生預先共用金鑰 (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 金鑰的值。