使用 PSK 建立密鑰

本頁面說明如何產生預先共用金鑰 (PSK),並使用該 PSK 建立驗證密鑰。

PSK 是共用密鑰密碼,用於驗證及加密兩部裝置之間的通訊。這是一種對稱式加密。

事前準備

如要建立 Secret,您必須具備必要的身分和存取權角色:

  • 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 金鑰的 Secret:

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 金鑰的值。

後續步驟