生成强预共享密钥

预共享密钥(也称为共享密钥或 PSK)用于在您的对等 VPN 网关中对 Cloud VPN 隧道进行身份验证。出于安全方面的考虑,建议您生成一个 32 个字符组成的强预共享密钥。

为您生成

下面的随机字符串由您的浏览器使用本页底部的 JavaScript 代码段生成。它是 Crypto.getRandomValues 中的 24 个字节,采用 base64 编码来创建一个 32 个字符组成的 PSK。

使用此代码段,私钥可以安全地保留在浏览器中。如果您希望在自己的系统上生成此密钥,请使用以下生成方法之一。

点击“重新生成”按钮将生成一个新的随机 PSK。

生成方法

使用以下方法可生成 32 个字符的强共享密钥。

使用 OpenSSL 生成共享密钥

在 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 直接在文档页面中生成预共享密钥。此 API 使用 Crypto.getRandomValues() 方法,可提供以加密方式生成预共享密钥的方法。

下面的代码将创建一个包含 24 个随机字节的数组,对这些字节进行 base64 编码后,即生成 32 个字符的随机字符串。


      var a = new Uint8Array(24);
      window.crypto.getRandomValues(a);

      console.log(btoa(String.fromCharCode.apply(null, a)));

    

后续步骤