码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 解决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
    
    • 1

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

    ENV ENCRYPT_KEY=thekey
    
    • 1

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

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

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

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

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

    spring:
      cloud:
        config:
          server:
            encrypt:
              enabled: false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

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

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

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

    这样就彻底解决 问题

  • 相关阅读:
    HTTP协议1)----对于应用层的详细讲解
    Ubuntu安装搜狗输入法
    第三章 使用管理门户监视IRIS - 共享内存堆使用情况
    “/etc/apt/sources.list.d“和文件/etc/apt/sources.list的不同
    非线性化改进的KP-Detector模型在人体姿态识别中的应用
    JavaScript链表---单向链表
    全局后置路由守卫(afterEach)
    全新版互联网大厂面试题,分类65份PDF,累计2000页
    leetcode 63. 不同路径 II(dp)
    PyTorch搭建卷积神经网络(ResNet-50网络)进行图像分类实战(附源码和数据集)
  • 原文地址:https://blog.csdn.net/nvd11/article/details/126203223
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号