密钥管理
配置服务器可以使用对称(共享)密钥或非对称密钥(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 | 要创建的 KeyStore 类型。默认为 jks 。 |
加密是使用公钥进行的,解密则需要私钥。因此,原则上,如果你只想加密(并且准备在本地使用私钥解密这些值),你可以在服务器上只配置公钥。实际上,你可能不希望本地解密,因为这会将密钥管理过程分散到所有客户端,而不是集中在服务器上。另一方面,如果你的配置服务器相对不安全,并且只有少数客户端需要加密的属性,这可能是一个有用的选项。