29-springcloud-config-5-配置信息的加解密安全处理

发布时间 2023-04-14 14:28:38作者: companion

前面是在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能自动解密配置内容;