简介
一般在spring boot 项目中, 我们会写一个AES 加密的类, 并把加密解密的key写在项目或配置文件中。
但 spring cloud config已经集成了这个功能。
两种加密策略
对称加密
所谓对称加密就是, 加密和解密都只用1个相同的key, 所以对key的保护很重要.
非对称加密
解密者先生成1对key pair, 把public key交给加密者用于加密, 自己留着private key进行解密。 暴露public key问题不大, 但是暴露private key还是危险的。
本文主要介绍Spring Cloud config 的对称加密
检查加密环境
启动 config server后
http://localhost:8888/encrypt/status
如果见到上面的信息代表加密环境是冇问题的。 只不过未指定策略
如果见到 No key was isntalled for encryption service… 代表不ok, 清换个高版本的JDK再试
在config server的配置文件中配置Key
这个key是对称加密的key
必须配置在bootstrap.yml中
encrypt:
key: loveatiamd
重启config server, 再检查 http://localhost:8888/encrypt/status
ok了
利用接口加解密
利用config server接口加密。
curl http://localhost:8888/encrypt -d password
利用config server接口解密密。
curl http://localhost:8888/decrypt -d encrypted_password
修改配置文件
把密文写入配置文件.
password: '{cipher}323e2265acd321eaec76a88bfa710f5f3673c58f8e6e1bbe2944f08b9518ac0c'
重启测试
如果你用mysql, 有可能会遇到
Public Key Retrieval is not allowed
的错误。
这是必须在mysql的url加上
&allowPublicKeyRetrieval=true
相信问题会解决