springcloud系列25——Spring Cloud Config之加解密

前言

在《springcloud系列25——SpringCloud配置管理》中介绍了以Git为首的作为配置仓库的示例。但是我们的配置项都是以明文的形式保存在Git仓库中。虽然我们可以创建私有的仓库,然后配置仓库的用户名和密码。但是如果账号被破解了呢?所以,本节要介绍的是如何加密你的配置项。这里首先介绍对称加密在Spring Cloud Config的用法。

前提

在Spring Cloud Config中使用加解密功能,需要在你的JVM中安装有一个没有加密强度限制的JCE(JDK自带的私有强度限制的)。

注:JCE全称为Java Cryptography Extension 。

具体做法如下:
1.从oracle下载无加密强度限制的JCE;
oracle JCE的下载地址:http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip

2.复制2个策略文件替换JDK自带的策略文件。
解压后,可以看到2个策略文件

找到jdk/jre/lib/security,然后覆盖这2个文件。

使用

在Config Server所在的应用增加秘钥的配置(配置到bootstrap.yml):

encrypt:
  key: foo

然后重启Config Server应用。

Spring Cloud会我们提供了相应的加密和解密的端点。
1.加密

2.解密

我们通过Spring Cloud提供的加密端点对配置信息进行加密,然后提交到GIT仓库。

需要注意的是,加密的信息前面必须有{cipher}前缀。

现在,我们来请求我们刚刚上传的加密的配置文件。

可以看到,Spring Cloud Config已经自动为我们解密了!

客户端使用

在上面也已经看到了,我们请求加密的配置,Spring Cloud Config为我们自动解密了,所以Cloud Config Client不需要做任何修改。

问题

1.配置encrypt.key=foo必须配置到bootstrap.yml中,不能配置到application.yml,否则无法加密。会返回如下错误

{
 "description":"No key was installed for encryption service",
 "status":"NO_KEY"
}

2.yml配置文件加密项需要使用引号,而Properties文件则不能用引号引起来。

yml配置示例:

spring:
  datasource:
    username: dbuser
    password: '{cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ'

可以参考:https://blog.csdn.net/chenxyz707/article/details/80487733

Spring Cloud Config官方文档:http://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#_spring_cloud_config

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值