【发布时间】:2016-02-02 23:34:29
【问题描述】:
我们的配置服务器相对不安全,只有少数客户端需要加密属性。理想情况下,我们希望服务器只有公钥,每个客户端都可以使用私钥进行解密。麻烦的是,默认情况下,配置服务器总是会尝试为你解密密文。为了防止这种情况,我禁用了这样的默认行为:
@SpringBootApplication(exclude = EncryptionAutoConfiguration.class)
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
现在,当客户端应用程序从配置服务器获取属性时,它会得到如下内容:
"source": {
"username": foobar,
"password": "{cipher}CiBNmK+y3ZLsXHVgaJMAiuNyLQo3p0e..."
}
我已经实现了一个 TextEncrypter bean 并对其进行了测试以确保它在客户端上正常工作。在客户端应用程序启动时,我希望 EnvironmentDecryptApplicationInitializer 类能够处理客户端的本地引导和应用程序属性以及从配置服务器获取的属性。但是我看到只考虑客户端的本地文件。如果我的密文出现在本地bootstrap.yml 中,那么它会被正确解密。但是,如果密文来自配置服务器,则不会被解密。有没有办法包含从配置服务器获取的属性?
【问题讨论】:
-
我想是的。你用的是什么版本?
-
我们使用的是 spring-boot 1.2.6 和 spring-cloud-config 1.0.3。如果可能的话,我们更愿意使用发布版本。