我们详细介绍了Spring Cloud Config 的基本配置和使用,但其实我们在实际项目中要做的不仅仅是这些。
由于所有配置文件都暴露在远程仓库之中,必然会存在安全问题,我们们就必须有一套安全机制去解决这个问题。
方法一:基于JCE的对称加密
第一步:首先去oracle官网下载 JCE : http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下载完成之后解压,把得到到两个Jar包复制到$JAVA_HOME\jre\lib\security
目录下 如果没用这一步,后面加密的时候会报错
第二步:配置密钥 注意:配置中心相关属性最好写在bootstrap.yml文件中 不然可能不会生效
第三步:我们这里把密码:1334 利用 http://localhost:8888/encrypt 把需要加密的数据进行加密:
注意加密一定要post请求 成功后返回加密后的字符串
第四步:Spring Cloud Config 在调用配置文件时会自动解密:
利用get方法调用 可以获取到解密后的:1334
如果不想自动解密 而是客户端获取密文后自行解密的话 可以把spring.cloud.config.server.encrypt.enabled属性改为false
设置为false之后再次调用配置文件 则如下图所示 直接返回密文:
方法二:非对称加密
第一步:利用jdk中自带的keytool工具生成密钥文件 通过CMD 进入jdk目录下的bin 目录 执行:
keytool -genkeypair -alias mykey -keyalg RSA -keypass mysecret -keystore server.jks -storepass 1334
生成server.jks的秘钥文件
第二步:配置加密属性
访问:http://localhost:8080/encrypt 进行加密
http://localhost:8080/decrypt 进行解密 注意:非对称加密和解密都是POST 若换成GET则会报405错误
接下来我们把项目中配置文件的密码改掉 测试一下非对称加密
然后访问配置文件进行测试 得到1334 测试成功 如下图: