• 欢迎访问 winrains 的个人网站!
  • 本网站主要从互联网整理和收集了与Java、网络安全、Linux等技术相关的文章,供学习和研究使用。如有侵权,请留言告知,谢谢!

跟我学Spring Cloud(Finchley版)(21):Spring Cloud Config-配置属性加解密

Spring Cloud winrains 来源:周立 12个月前 (11-17) 57次浏览

前文都是将配置明文存储在Git仓库中,但在实际项目中,敏感的配置属性(例如数据库账号、密码等),都应加密存储,从而提高安全性。
Config Server为配置内容的加密与解密提供了支持。

安装JCE

加解密端点

  • 加密:curl $CONFIG_URL/encrypt -d 想要加密的内容
  • 解密:curl $CONFIG_URL/decrypt -d 想要解密的密文

对称加密

  • Config Server的bootstrap.yml中添加:
encrypt:
  key: foo  # 设置对称密钥

密文存储

  • 以yaml格式存储:
spring:
  datasource:
    username: dbuser
    password: '{cipher}851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3'
  •  以properties格式存储:
spring.datasource.username=dbuser
spring.datasource.password={cipher}851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3

测试

  • 输入命令
curl http://localhost:8080/encrypt -d mysecret
  • 返回851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3 。说明mysecret 被加密了。

  • 输入命令
curl http://localhost:8080/decrypt -d 851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3
  • 可返回mysecret ,说明能够正常解密。

非对称加密

  • 执行以下命令,并按照提示操作,即可创建一个Key Store。
keytool -genkeypair -alias mytestkey -keyalg RSA -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass changeme -keystore server.jks -storepass letmein
  •  将生成的server.jks文件复制到项目的classpath下。
  • 在bootstrap.yml中添加以下内容。
encrypt:
  keyStore:
    location: classpath:/server.jks # jks文件的路径
    password: letmein               # storepass
    alias: mytestkey                # alias
    secret: changeme                # keypass

这样,使用命令

curl http://localhost:8080/encrypt -d mysecret

尝试加密时 ,就会得到类似以下的结果。

AQB38UyNckYzW64rvsaIhy0OV4MUmS7krdHrw+VLUdqXJ4ZVdZL8/ouwSOAYM+6MSjKvzmkaU8Iv2cQ5MWhlZhCrm0f0d2ubc1MH96KBHTix9AroajeTiofPwPoBnWfBo9cC4PU1vD+rcvAvwvdR5q7rYbFc4yut4uJZRzpAXGgf680kAtb6tEtLx7c4/35PEaGXFWd2m8gn21vzWdvhbP6cdC9YlburL0Rq/0H1G+uEX99ZVIWJ0hVn4rplLWPMLUGA2ZVEyVRorIRX/2z5MU7cVPtJ6X1JZDpU4GVz8/3rD5BnbVFTGo6DfBrEzJn58Bzjl6aqo9ca/3j42RHOoQDOHXGqRX/843RbPdvMqTZd0rTOBHTUrVG9E15sCajiLkw=
  • 相对于对称加密,非对称加密的安全性更高,但对称加密相对方便。读者可按照需求,自行选择加密方案。

注意点&坑

encrypt.* 务必存放在bootstrap.* 中,否则加解密特性无法生效!!

配套代码

对称加密

非对称加密

相关文章

作者:周立

来源:http://www.itmuch.com/spring-cloud/finchley-21/


版权声明:文末如注明作者和来源,则表示本文系转载,版权为原作者所有 | 本文如有侵权,请及时联系,承诺在收到消息后第一时间删除 | 如转载本文,请注明原文链接。
喜欢 (0)