Key Management

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 实用工具创建的密钥库)。Keystore 属性为 encrypt.keyStore.,其中 等于:

Property Description

encrypt.keyStore.location

Contains a Resource location

encrypt.keyStore.password

保存解锁密钥库的密码

encrypt.keyStore.alias

标识使用商店中哪个密钥

encrypt.keyStore.type

要创建的 KeyStore 类型。默认为 jks

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