生成强预共享密钥

您可以使用预共享密钥(也称为共享密钥PSK)向对等方 VPN 网关验证 Cloud VPN 隧道的身份。出于安全方面的考虑,建议您生成一个 32 个字符组成的安全系数高的预共享密钥。

如需详细了解 Cloud VPN,请参阅 Cloud VPN 概览

如需了解本页面中使用的术语的定义,请参阅关键术语

为您生成

您的浏览器使用本页末尾的 JavaScript 代码段生成以下随机字符串。它是 Crypto.getRandomValues 中的 24 个字节,采用 base64 编码可创建 32 个字符的预共享密钥。

使用此代码段,私钥会在浏览器中安全保存。如果您要在自己的系统上生成此密钥,请使用下一部分中列出的一种生成方法。

如需生成新的随机预共享密钥,请点击重新生成按钮。

生成方法

使用以下方法生成 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)));

后续步骤

  • 要查找维护 VPN 隧道和网关的资源,请参阅维护 VPN 方法指南
  • 如需使用高可用性和高吞吐量场景或多个子网方案,请参阅高级配置
  • 如需帮助解决使用 Cloud VPN 时可能会遇到的常见问题,请参阅问题排查