解决Spring Cloud Config API 暴露密码的问题

Background

根据 https://blog.csdn.net/nvd11/article/details/126169409
Spring Cloud config 可以方便地对配置内容加密解密, 但是即使我们完成了加解密。

一旦某人知道config server的真实ip地址, 他可以通过下面的url 看到明文密码
在这里插入图片描述

原因和解决方向

原因很简单, 当程序or 用户调用api时, Config server是先解密再传输数据的。
所以要避免这个问题, 我们要领导config server不在 server 端解密, 而在 微服务的 Client端解密, 这样即使有人拿到api 的url, 他看到的仍然是加密后的信息。

Step 1, 在config server 注释掉 之前的key 设置

在这里插入图片描述
如果这时在local 重启 config server
再检查加密环境, 提示key未 ready
在这里插入图片描述

其实保留这个配置也可, 只不过我不想把key放入代码, 利用环境变量设置更加安全。

Step 2,设置环境变量, 设置ENCRYPT_KEY=thekey

如果在local 环境, 在IDE Run configuration 设置既可
在这里插入图片描述
如果在linux server下, 在对应的账号 profile 里 加入

export ENCRYPT_KEY=thekey

在docker 环境下, 在docker file里这个变量

ENV ENCRYPT_KEY=thekey

在windows server 环境下左转C# 不送

这是重启config server
加密 环境又好了
在这里插入图片描述

Step 3,在bootstrap.yml 里设置禁止在server端解密

如果这时我们再次调用API去获得配置文件。
可以看到密码仍然是明文的, 也就是还是被server 端解密了。

我们这时要修改配置, 加入

spring:
  cloud:
    config:
      server:
        encrypt:
          enabled: false

重启config server, 再调用API, 这是返回的是密文了
在这里插入图片描述
这时我们已经可以避免明文密码泄露

Step 4,微服务端(client) 设置client端机密和 key

如果直接启动微服务, 因为config server不再提供解密后的信息。所以会得到下面的error
在这里插入图片描述
其实同样为 这个微服务端加上环境变量 ENCRYPT_KEY=thekey 就ok, 同样的方法

重启服务, 连接数据库成功, 证明成功在Client端解密。

这样就彻底解决 问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nvd11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值