29-springcloud-config-5-配置信息的加解密安全处理
前面是在Git仓库中明文存储配置信息值,很多场景下,对于某些敏感的配置内容(例如数据库账号、密码等),应该加密存储,config server为我们考虑到了这一点,对配置内容提供了加密与解密支持;
安装JCE
config server的加解密功能依赖Java Cryptography Extension(JCE)
Java 8 JCE下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下载得到JCE的zip压缩包并解压,将其中的jar包覆盖到JDK/jre/lib/security目录下;
对称加密
config server提供了加密与解密的接口,分别是
加密接口:http://localhost:8888/encrypt
解密接口:http://localhost:8888/decrypt (这个接口我们不需要用)
解密是config-server自动完成的;
在原来的springcloud-service-config项目中添加bootstrap.properties配置文件,里面配置密钥:
#设置对称密钥,用这个密钥进行加密和解密
encrypt.key=key111
运行项目,验证加解密:
加密:curl http://localhost:8888/encrypt -d root
得到:9455e7d7333e1cc9d1a8680244f6db3aae6de93825d4bc6f9f4258993f7a8cad
解密:curl http://localhost:8888/decrypt -d 9455e7d7333e1cc9d1a8680244f6db3aae6de93825d4bc6f9f4258993f7a8cad
在git仓库增加修改配置文件application-dev.properties,增加如下内容:
spring.datasource.username={cipher}9455e7d7333e1cc9d1a8680244f6db3aae6de93825d4bc6f9f4258993f7a8cad
spring.datasource.password={cipher}5a6e3e417d416736d638cd4db7a6380a71a8709c3ec335a28e01cff05705eeaa
访问地址:http://localhost:8888/application-dev.properties 得到密钥原文;
说明 config server能自动解密配置内容;