本页面介绍了如何生成预共享密钥 (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 密钥的值。