跳到主要内容
版本:5.0.1

使用多个密钥和密钥轮换

DeepSeek V3 中英对照 Using Multiple Keys and Key Rotation

除了加密属性值中的 {cipher} 前缀外,Config Server 还会在(Base64 编码的)密文开始之前查找零个或多个 {name:value} 前缀。这些键会被传递给 TextEncryptorLocator,该定位器可以执行任何所需的逻辑来为密文定位 TextEncryptor。如果您配置了密钥库(encrypt.keystore.location),默认定位器会查找由 key 前缀提供的别名对应的密钥,密文格式类似于以下示例:

foo:
bar: `\{cipher}{key:testkey}...`

定位器会查找名为 "testkey" 的密钥。也可以通过在前缀中使用 {secret:…​} 值来提供密钥。但是,如果未提供,默认将使用密钥库密码(这是在构建密钥库且未指定密钥时获得的密码)。如果确实提供了密钥,还应使用自定义的 SecretLocator 对密钥进行加密。

当密钥仅用于加密少量配置数据(即未在其他地方使用)时,从加密角度而言几乎无需进行密钥轮换。然而,您偶尔可能需要更改密钥(例如,在发生安全漏洞时)。在这种情况下,所有客户端都需要更改其源配置文件(例如,在 git 中),并在所有密文中使用新的 {key:…​} 前缀。请注意,客户端需要首先确认密钥别名在 Config Server 密钥库中可用。

提示

如果您希望让配置服务器同时处理加密和解密操作,{name:value} 前缀也可以作为纯文本添加到发送至 /encrypt 端点的请求中。