前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟我学Spring Cloud(Finchley版)-21-Spring Cloud Config-配置属性加解密

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

作者头像
用户1516716
发布2019-03-14 16:13:08
7350
发布2019-03-14 16:13:08
举报
文章被收录于专栏:A周立SpringCloud

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

Config Server为配置内容的加密与解密提供了支持。

安装JCE

  • Java 6 JCE地址:https://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
  • Java 7 JCE地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
  • Java 8 JCE的地址:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html 。

加解密端点

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

对称加密

Config Server的bootstrap.yml中添加:

代码语言:javascript
复制
encrypt:
  key: foo  # 设置对称密钥

密文存储

1 以yaml格式存储:

代码语言:javascript
复制
spring:
  datasource:
    username: dbuser
    password: '{cipher}851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3'

2 以properties格式存储:

代码语言:javascript
复制
spring.datasource.username=dbuser
spring.datasource.password={cipher}851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3

测试

1 输入命令

代码语言:javascript
复制
curl http://localhost:8080/encrypt -d mysecret

返回 851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3 。说明 mysecret 被加密了。

2 输入命令

代码语言:javascript
复制
curl http://localhost:8080/decrypt -d 851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3

可返回 mysecret ,说明能够正常解密。

非对称加密

1 执行以下命令,并按照提示操作,即可创建一个Key Store。

代码语言:javascript
复制
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

2 将生成的server.jks文件复制到项目的classpath下。

3 在bootstrap.yml中添加以下内容。

代码语言:javascript
复制
encrypt:
  keyStore:
    location: classpath:/server.jks # jks文件的路径
    password: letmein               # storepass
    alias: mytestkey                # alias
    secret: changeme                # keypass

这样,使用命令

代码语言:javascript
复制
curl http://localhost:8080/encrypt -d mysecret

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

代码语言:javascript
复制
AQB38UyNckYzW64rvsaIhy0OV4MUmS7krdHrw+VLUdqXJ4ZVdZL8/ouwSOAYM+6MSjKvzmkaU8Iv2cQ5MWhlZhCrm0f0d2ubc1MH96KBHTix9AroajeTiofPwPoBnWfBo9cC4PU1vD+rcvAvwvdR5q7rYbFc4yut4uJZRzpAXGgf680kAtb6tEtLx7c4/35PEaGXFWd2m8gn21vzWdvhbP6cdC9YlburL0Rq/0H1G+uEX99ZVIWJ0hVn4rplLWPMLUGA2ZVEyVRorIRX/2z5MU7cVPtJ6X1JZDpU4GVz8/3rD5BnbVFTGo6DfBrEzJn58Bzjl6aqo9ca/3j42RHOoQDOHXGqRX/843RbPdvMqTZd0rTOBHTUrVG9E15sCajiLkw=

相对于对称加密,非对称加密的安全性更高,但对称加密相对方便。读者可按照需求,自行选择加密方案。

注意点&坑

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

配套代码

对称加密

  • GitHub:https://github.com/eacdy/spring-cloud-study/tree/master/2018-Finchley/microservice-config-server-encryption
  • Gitee:https://gitee.com/itmuch/spring-cloud-study/tree/master/2018-Finchley/microservice-config-server-encryption

非对称加密

  • GitHub:https://github.com/eacdy/spring-cloud-study/tree/master/2018-Finchley/microservice-config-server-encryption-rsa
  • Gitee:https://gitee.com/itmuch/spring-cloud-study/tree/master/2018-Finchley/microservice-config-server-encryption-rsa
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT牧场 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装JCE
  • 加解密端点
  • 对称加密
    • 密文存储
      • 测试
      • 非对称加密
      • 注意点&坑
      • 配套代码
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档