前言
首先我们要知道加密的是什么,加密的是配置文件的信息,上一篇文章我们都是使用明文的,但是如果是share的一些东西,比如说是数据库就是十分敏感了,那么再使用加密之前我们还需要一个工具JCE,download JDK8
JCE安装
- zip解压(包含local_policy.jar 加密策略文件/README.txt/US_export_policy.jar 解密策略文件)
- 打开readme,其中有Installation
- 替换JDK本身的策略文件即可,替换路径 C:\Program Files\Java\jdk1.8.0_92\jre\lib\security 路
- microserver-config-server中application.yml 添加配置内容encrypt.key=foor
server: port: 8080 spring: cloud: config: server: git: uri: https://gitee.com/xuhaiyancoco/config-repo-51cto-video encrypt: key: foor
- microserver-config-server启动
- 加密操作<cmd ——>curl -X POST http://localhost:8080/encrypt -d foobar——>errorMsg:{"description":"The encryption algorithm is not strong enough","status":"INVALID"}——>解决办法——>最终加密成功!>
- 解密操作<cmd ——>curl -X POST http://localhost:8080/decrypt -d 643cf2e6190ec369fd65cbfbe289127ef1d84ecb766dcd4398db7560c47d18c9——>resultMsg:fooba——>最终解密成功!>
-
如何存储和解密
-
官方demo
spring:
datasource:
username: dbuser
password: '{cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ'
-
1 复制microserver-config-server做microserver-config-server-encrygt项目,创建文件如图所示,上传到Git上面:
profile: '{cipher}643cf2e6190ec369fd65cbfbe289127ef1d84ecb766dcd4398db7560c47d18c9'
内容为上述测试的加密和+'{cipher}
-
2 然后我们去config-repo-51cto-video将要访问的配置内容文件名为:foobar-production.yml,copy到浏览器上,当然访问规则记得加上去http://localhost:8080/master/foorbar-production.yml访问结果如下:
总结:存储是利用'{cipher},解密是config server自动解密,也就是说config client拿到的就是解密的
问:http://localhost:8080/master/foobar-test.properties是解密还是未解密呢?
答:是没有的
正确做法,修改foobar-test.properties,去掉‘’号
再次访问结果如下,自动已经解密了 <yml加‘’号,properties是当成字符串,不解密了>
就如文档所说:
Encrypted values in a .properties file must not be wrapped in quotes, otherwise the value will not be decrypted: