在工作中往往很多时候密码是不能作为明文在配置文件中存储的,这个时候需要加密密码,可以使用{cipher}加密
总的来说只有几个步骤

1.添加依赖


这里需要注意引入的是spring-cloud-starter-config而不是spring-cloud-config-server至于为什么后面介绍

2.在bootstrap中添加加密秘钥



此处举例秘钥为123456,当然也可以设置更复杂的密码
后面springcloudconfig设置为false,具体为什么笔者也没有搞清楚,后面有介绍如果不这么设置的话会有什么情况发生

3.将配置文件中的密码设为密文


用{cipher}表示加密后的密文,后面是具体密文字符串

3.1密文如何获取

暂时没找到更好的方法,采用的是另起一个server-config调用接口获得密文

  1. 新建一个maven工程
    可以使用 spring初始化工具快速创建一个工程,注意添加依赖即可

  1. 编写main
    将建好的工程用idea打开,编写main
package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;@SpringBootApplication
@EnableConfigServer
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}
  1. 添加bootstrap
    注意此处的密钥需要和之前工程中的密钥一致,且需要配置一下git的地址,如果没有的话就配一下本地,具体为什么后面介绍
encrypt:key: 123456spring:profiles:active: nativecloud:config:server:native:search-locations: C:\Users\Downloads\demo (1)\demo
  1. 使用postman调用接口
    获取加密后的密文,将此处得到的密文加上{cipher}配置到配置文件中

同样也有配套的解密接口

4.踩过的坑

4.1添加依赖

  1. spring-cloud-starter-config和spring-cloud-config-server依赖都可

引别的依赖和不配置config都不影响工程的启动


但是不能配config-locations不然会出之前一样的问题

当然不管是spring-cloud-starter-config还是spring-cloud-config-server都是需要引入一个的,这是能识别{cipher}并进行解密的前提

4.2密文获取

  1. bootstrap必须配置地址

如果不配

***************************
APPLICATION FAILED TO START
***************************Description:Invalid config server configuration.Action:If you are using the git profile, you need to set a Git URI in your configuration.  If you are using a native profile and have spring.cloud.config.server.bootstrap=true, you need to use a composite configuration.Disconnected from the target VM, address: '127.0.0.1:52855', transport: 'socket'

如果配成false

***************************
APPLICATION FAILED TO START
***************************Description:Invalid config server configuration.Action:If you are using the git profile, you need to set a Git URI in your configuration.  If you are using a native profile and have spring.cloud.config.server.bootstrap=true, you need to use a composite configuration.Disconnected from the target VM, address: '127.0.0.1:52997', transport: 'socket'

4.3可能出现的错误

一开始想在原工程中写个main起一下config-server,但是直接写之后起不来,报这样的错

搜了一下之后,排除了数据库的自动配置

报这样的错

搜了一下,这样改之后依然报相同的错

于是改成了这样,配置了本地的地址

报这样的错应该是因为排除了DataSourceautoconfiguration所以没有引入相应的java

解决不了,于是新建了一个工程起config-server

4.4 后续

  1. 需将之前写的main删除,

否则之前出现的问题依旧出现,不是修改mainclass就可以的

  1. 需将之前配置的config注释

    否则可能读取config报错

    重新mvn clean install之后报这个错


    所以要注释掉之前的配置

参考文档
使用对称加密来加密Spring Cloud Config配置文件

配置中心(Config-Server)

SpringCloud ConfigServer的详细配置

The following classes could not be excluded because they are not auto-configuration classes错误的处理方式

springcloud本地启动指定profile后错误If you are using the git profile, you need to set a Git URI in your configuration.

无git库配置configserver

使用cipher加密配置文件相关推荐

  1. Springboot加密配置文件中数据库密码的两种解决方案

    Springboot 加密配置文件中数据库密码的两种解决方案 第一种:jasypt 加解密 jasypt 是一个简单易用的加解密Java库,可以快速集成到 Spring Boot 项目中,并提供了自动 ...

  2. Spring Cloud Config - RSA简介以及使用RSA加密配置文件

    简介 RSA非对称加密有着非常强大的安全性,HTTPS的SSL加密就是使用这种方法进行HTTPS请求加密传输的.因为RSA算法会涉及Private Key和Public Key分别用来加密和解密,所以 ...

  3. 使用AES加密配置文件

    考虑到数据库连接密码直接配置在xml中,项目流转出现密码泄露隐患,这里直接对密码进行AES加密 <!-- 配置 读取properties文件 jdbc.properties -->    ...

  4. Python Crypto.Cipher加密包

    The Crypto.Cipher package contains algorithms for protecting the confidentiality of data. Crypto.Cip ...

  5. Java cipher加密与解密

    javax.crypto.Cipher类提供加密和解密功能,该类是JCE框架的核心. ENCRYPT_MODE,加密数据 DECRYPT_MODE,解密数据 WRAP_MODE,将一个Key封装成字节 ...

  6. Spring解析加密配置文件

    在项目中,属性配置文件中常常放了许多项目中的配置,比如用户名密码等等,如果我们直接将这些明文密码暴露在配置文件中是非常的不安全的,所以我们就需要将属性文件中的部分信息进行加密处理以提高安全性.下面介绍 ...

  7. Springboot加密配置文件中的敏感信息(ps:数据库密码)的方法

    SpringBoot配置文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysql登陆密码,redis登陆密 ...

  8. Springboot项目使用jasypt加密配置文件中的敏感信息

    目录 目录 项目背景 需求 jasypt简介 使用 0,版本对应关系 1,引入依赖 2,启用加密 2.1,在启动类上配置注解 2.2,启用注解扫描和@Configuration配置 2.3,只针对指定 ...

  9. mysql连接字符串加密配置文件_Asp.net2.0如何加密Web.config配置文件数据库连接字符串...

    在asp.net2.0中,发布网站时,加密web.config,这样可以有效保证数据库用户和密码安全,其步骤如下: ①添加密钥 执行:C:\WINDOWS\Microsoft.NET\Framewor ...

最新文章

  1. PHP session回收机制
  2. Deepin下配置JDK8
  3. [学习总结]7、Android AsyncTask完全解析,带你从源码的角度彻底理解
  4. java 判断闰年和月份_java----根据输入的年月判断闰年和打印日历
  5. DELPHI存储过程调用
  6. html中图片动态效果代码,动态网页设计代码 网页制作动态图片效果源代码
  7. 怎么快速查找重复文件以及删除重复文件
  8. C++ OpenCV 将黑点框出来
  9. Java 微信图片上传素材管理
  10. 软考学习:吐血整理——自学软考的终极干货
  11. 数据分析中的概率分析经验总结:正态分布随机数置信水平
  12. 【uniapp滚动穿透】 在u-modal中使用scroll-view底下主页面会跟随滚动
  13. 国外推荐:计算机专业人士必读
  14. 【历史上的今天】8 月 20 日:两位传奇程序员的诞生日!
  15. MindMaster思维导图及亿图图示会员 超值获取途径
  16. Python的爬虫程序
  17. 盖茨和李嘉诚双龙卸甲 他们的区块链业务一个在链圈扶贫 一个在币圈赚钱
  18. ubuntu常用命令大全(转)
  19. 达梦数据库odbc的安装
  20. JavaScript代码具体是怎么引入到HTML中的?

热门文章

  1. 坐标沿着原点旋转/坐标轴旋转变换公式
  2. vi vim 快速跳到文件末尾 GA 在最后一行下方新增一行 (光标换行,文字不换行) GO
  3. 孩子发烧,别急着降温
  4. 阿里云第三方:_身份证二要素API接口
  5. MySQL入门学习之——实战XtraBackup
  6. nvcc(CUDA编译器)
  7. 开源中国社区开源项目排行榜
  8. 03-做一个通读Vue源码的计划吧
  9. python怎么找出最大数_python怎么找出最大数
  10. Linux 安装Redis-6.2.5,配置及使用(RDB与AOF持久化、sentinel机制、主从复制、Spring Boot 集成 Redis)