spring-cloud-config加密

本文介绍如何使用Spring Boot实现配置中心的安全保护和加密配置,包括访问加密、对称加密及非对称加密的方法,确保配置信息如数据库、服务器地址等敏感信息的安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安全保护

由于配置中心存储的内容比较敏感,做一定的安全处理是必要的。为配置中心实现安全保护的方式有很多,比如物理网络限制,OAuth2授权等。不过,由于我们的微服务应用和配置中心都是构建与springboot基础上的,所以与spring security结合使用会更加方便。

访问加密

当我们使用config配置中心时,可以同过url:port/{name}/{profile}来查看配置中心的具体配置
但是我们不想让非开发人员查看这些,因为这里面有数据库,服务器地址等众多安全信息。
这时候就需要利用security的功能进行实现。
配置security访问加密:

配置中心配置

依赖配置

除config与spring-boot本身所需依赖之外,需增加security依赖:

compile("org.springframework.boot:spring-boot-starter-security")
配置中心配置访问账户与密码
security:
  user:
    name: jjj
    password: 123456

客户端配置

依赖配置

除config与spring-boot本身所需依赖之外,需增加security依赖:

compile("org.springframework.boot:spring-boot-starter-security")
客户端配置访问账户与密码
spring:
  cloud:
    config:
      username: jjj
      password: 123456

备注

增加依赖后,如不配置账户与密码,config启动时会自动生成随机加密密码于控制台,
这种形式不够友好,故这里不标注

敏感内容加密

提示

特别提示,如进行了访问加密,以下功能会有部分异常(请求加密因需要身份认证无法完成),需要在以下加密信息配置完成后,再开启访问加密功能

对称加密

使用前提,修改jce关联jar

首先,在控制台输出

echo %JAVA_HOME%

查看你的java环境变量
然后根据java版本。去如下链接进行下载jce
jce-7下载
jce-8下载
需要使用的jar
将以上两个文件,替换掉%JAVA_HOME%/jre/lib/security下的原有jar

修改jce原因

原有jce有密匙长度限制,如果不进行修改,请求config加密时会报以下错误

java.security.InvalidKeyException: Illegal key size。
配置密匙,并对需要的配置进行加密
配置密匙
encrypt:
  key: jjj
测试密匙是否生效

url请求如下url:

http://localhost:11087/encrypt/status

如果返回以下结果,表示已生效
请求结果

配置文件内容加密

控制台请求:

curl localhost:11087/encrypt -d root

将返回如下结果:
返回
postMan请求:
postMan请求
每次请求的返回值都会不同,
即:不可在已经进行加密配置完成,进行重复访问加密操作。

git配置文件配置
#密匙当然要配过来
encrypt:
  key: sang
spring:
  datasource:
    write:
      username: '{cipher}5256c79d102d6030ed467aaf91e2e1d2370f4df6b8263972bc961141c2a56611'
#{cipher}后内容表示需解密,''如果不加,无法正常识别这个字符串

非对称加密

需要利用java中的keytool来生成密匙,并存于客户端,服务端,
不同环境也需要进行配置,过程比较繁琐,而且不利于修改,故这里不做详解

总结

先进行对称加密配置,配置完成以后,开启访问加密配置(访问加密配置需写在客户端bootstrap.yml,未验证git能否正常使用,应该不可以),密匙应配置于配置中心中,此时,无论数据库还是oss敏感账户密码信息,都可以得到解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值