springcloud的config加密与解密

ps:本人是北大青鸟课工场学生,以下为课工场素材
准备工作
默认情况下JRE中自带了JCE(Java Cryptography Extension),但是默认是一个有限长度的版本,这里需要一个不限长度的JCE,这个JCE可以在Oracle官网下载,下载之后解压,可以看到如下三个文件:

需要将这里的两个jar包拷贝到的jdk安装目录下,覆盖%JAVA_HOME%\jre\lib\security目录下原有的文件。
如此之后,准备工作就完成了。
对称加解密
对称加解密比较简单,直接配置密钥就可以了,在创建出来的config-server中配置密钥,但是注意这个密钥需要配置在bootstrap.properties中,另外这里还有非常重要一点:Spring Cloud的Dalston.SR3和Dalston.SR2版本在这个问题上是有BUG的,如果用这两个版本在这里测试会没有效果,应该避开使用这两个版本,配置如下:
encrypt.key=自定义一个值形成加密规则和解密规则
配置完成之后,启动config-server工程,然后访问如下地址http://localhost:服务器端口/encrypt/status,如果看到如下访问结果,表示环境搭建成功了:

此时我们就可以通过第三方工具如POSTMAN、RestClient等来访问/encrypt和/decrypt接口,比如说我要给dev这个字符加密,方式如下(我这里以POSTMAN为例,注意是POST请求):

解密方式如下:

OK,拿到加密的字符串之后,我们就可以在配置文件中使用了,还是我们昨天的配置文件,这次我这样来写:

小伙伴们注意,配置文件的值如果是以{cipher}开头,表示该值是一个加密字符,配置中心config-server在获取到这个值之后会先对值进行解密,解密之后才会返回给客户端使用。
非对称加解密
上文使用了对称加解密的方式来确保配置文件的安全性,如果使用非对称加解密的方式,安全性将会得到进一步的提高。使用非对称加密的话需要先生成密钥对,生成密钥对可以直接使用jdk中自带的keytool工具,方式如下:
keytool -genkeypair -alias config-server -keyalg RSA -keystore config-server.keystore
执行效果如图:

执行成功之后,会在命令执行目录下生成一个名为config-server.keystore的文件,将该文件拷贝到config-server的srcmainresources目录下,然后做如下配置:
encrypt.key-store.location=config-server.keystore
encrypt.key-store.alias=config-server
encrypt.key-store.password=111111
encrypt.key-store.secret=111111
OK,如此之后我们的非对称加密就配置好了,测试方式和对称加密的测试方式一致.

发布了2 篇原创文章 · 获赞 0 · 访问量 40

猜你喜欢

转载自blog.csdn.net/weixin_45724219/article/details/104824881