使用 PSK 创建 Secret

本页面介绍了如何生成预共享密钥 (PSK),以及如何使用该 PSK 创建身份验证 Secret。

PSK 是一种共享的密钥密码,用于对两台设备之间的通信进行身份验证和加密。它是一种对称加密。

准备工作

如需创建密文,您必须拥有必要的身份和访问权限角色:

  • VPN 管理员:拥有对所有 VPN 相关资源的读写权限。请让您的组织 IAM 管理员向您授予 VPN 管理员 (vpn-admin) 角色。
  • VPN 查看者:拥有对所有 VPN 相关资源的读取权限。请让您的组织 IAM 管理员向您授予 VPN Viewer (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

通过 W3C Web Cryptography API 使用 JavaScript 直接在文档中生成预共享密钥。如需了解详情,请参阅 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 密钥的值。

后续步骤