密钥管理

Config Server 可以使用对称密钥(共享密钥)或非对称密钥(RSA 密钥对)。从安全性方面考虑,非对称密钥更好,但使用对称密钥通常更方便,因为它只需要在 application.properties 中配置单个属性值。

要配置对称密钥,需要将 encrypt.key 设置为一个秘密字符串(或使用 ENCRYPT_KEY 环境变量将其保留在纯文本配置文件之外)。

如果在类路径中包含 spring-cloud-starter-bootstrap 或将 spring.cloud.bootstrap.enabled=true 设置为系统属性,则需要在 bootstrap.properties 中设置 encrypt.key
无法使用 encrypt.key 配置非对称密钥。

要配置非对称密钥,请使用密钥库(例如,由 JDK 附带的 keytool 实用程序创建的密钥库)。密钥库属性为 encrypt.keyStore.*,其中 * 等于

属性 描述

encrypt.keyStore.location

包含一个 Resource 位置

encrypt.keyStore.password

保存解锁密钥库的密码

encrypt.keyStore.alias

标识要使用的存储区中的哪个密钥

encrypt.keyStore.type

要创建的密钥库类型。默认为 jks

加密使用公钥完成,解密需要私钥。因此,原则上,如果只想加密(并准备使用私钥在本地自行解密值),则可以在服务器中仅配置公钥。实际上,您可能不想在本地进行解密,因为这会将密钥管理过程分散到所有客户端,而不是将其集中在服务器中。另一方面,如果您的配置服务器相对不安全,并且只有少数客户端需要加密属性,则这是一个有用的选项。