您现在的位置是:系统运维 >>正文
Nacos 中的配置文件如何实现加密传输
系统运维1941人已围观
简介小伙伴们知道,Spring Cloud Config 很早就提供了配置文件的加解密功能,并且支持对称加密和非对称加密两种不同的模式。Nacos 作为分布式配置中心+服务注册中心的合体,在配置文件加密这 ...
小伙伴们知道,中置文Spring Cloud Config 很早就提供了配置文件的何加密加解密功能,并且支持对称加密和非对称加密两种不同的实现模式。Nacos 作为分布式配置中心+服务注册中心的传输合体,在配置文件加密这块一直差点意思,中置文不过好在 ,何加密如果你使用的实现 Nacos 版本大于 2.0.4 这个版本 ,那么现在也可以通过插件的传输方式来实现配置文件加密了。
1. 配置文件加密
松哥在之前的中置文微服务视频中讲过 ,Spring Cloud Config 的何加密对称加密和非对称加密,香港云服务器加密后的实现文件格式类似下面这样 :
复制name={ cipher}密文 password={ cipher}密文1.2.可以看到,在 Spring Cloud Config 中,传输对配置文件的中置文加密是针对字段一个一个加密的。
而 Nacos 中的何加密加密,则是实现对整个配置文件的内容进行加密 ,这点和 Spring Cloud Config 不同。
Nacos 中是通过 SPI 的机制抽象出加密和解密的建站模板操作,Nacos 默认提供 AES 对称加密的实现 ,不过用户也可以自定义加解密的实现方式 。
在 Nacos 服务端启动的时候就会加载所有依赖的加解密算法,然后通过发布配置的 dataId 的前缀来进行匹配是否需要加解密和使用的加解密算法。
客户端发布的配置会在客户端通过 filter 完成加解密,也就是源码库配置在传输过程中都是密文的,而控制台发布的配置会在服务端进行处理。
换言之,用了 Nacos 的配置文件加密插件之后,我们在 Nacos 管理页面上配置的配置文件,将会以加密的密文形式存储在数据库中,也会以密文的形式传输到客户端 ,然后在客户端自动完成解密操作。大致上就是高防服务器这样一个过程 。接下来我们就来看看具体的用法。
2. 实践
首先我们需要下载 nacos 源码进行编译,编译完成之后 ,需要将之安装到本地 Maven 仓库(因为编译加密插件需要用到 Nacos) 。
首先 clone nacos 源码 ,如下 :
复制git clone https://github.com/alibaba/nacos.git1.下载之后,个人建议用 IDEA 去编译,操作方便一些(因为后续还有其他操作) 。
所以我们先用 IDEA 打开项目,确认项目所需依赖均已下载完毕,然后点击 install 按钮 ,将项目编译安装到本地仓库:
图片
接下来 clone 配置文件加解密的插件 ,如下 :
复制git clone https://github.com/nacos-group/nacos-plugin.git1.也用 IDEA 打开这个插件项目。免费模板这个插件编译要用到我们刚刚编译安装好的 Nacos,但是给的版本号不对 ,需要我们手动修改下,位置在 nacos-plugin/pom.xml,修改里边 Nacos 的版本号,从 2.2.0-SNAPSHOT 改为 2.2.0-BETA(我刚刚编译安装的是这个版本,大家根据自己的实际情况选择):
复制<alibaba-nacos.version>2.2.0-BETA</alibaba-nacos.version>1.改完之后也执行 install 操作 ,将所有的插件都安装到本地仓库:
图片
接下来回到一开始的服务器租用 Nacos 项目中,在 Nacos 项目中引入这个插件的依赖,建议在 config 模块中引入 ,如下图:
图片
引入内容如下:
复制<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-aes-encryption-plugin</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>1.2.3.4.5.加了这个依赖之后,我们的 Nacos 就具备了配置文件加密功能了 。
现在我再改一下 console/src/main/resources/application.properties 配置文件,让 Nacos 将数据存入到本地数据库中,如下:
复制### Count of DB: db.num=1 spring.sql.init.platform=mysql ### Connect URL of DB: db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&cnotallow=1000&socketTimeout=3000&autoRecnotallow=true&useUnicode=true&useSSL=false&serverTimeznotallow=UTC db.user=root db.password=1231.2.3.4.5.6.7.配置完成后,本地提前准备好一个名为 nacos_config 的数据库 ,并执行 distribution/conf/mysql-schema.sql 脚本文件,将所需的表先创建出来。
接下来 ,为项目添加启动参数,我们以单机而不是集群的方式来启动 Nacos,如下:
图片
上图大家重点看两个地方,一个是启动类所处的位置 ,另外一个则是启动参数。
好啦 ,现在我们就可以像启动 Spring Boot 项目那样启动 Nacos 了 。
3. 发布
如果我们想将项目打包发布的话,松哥建议大家先从 GitHub 上下载官方的压缩包 ,官方的压缩包里边 ,有一个 target 目录 ,这个目录下有一个 nacos-server.jar 文件 ,这个就是 nacos 的启动包了 。对于这个官方的压缩包,大家正常配置就行了 。
然后,在 IDEA 中 ,对我们刚刚处理过的 nacos,重新打包 ,不过记得打包的时候设置一下环境 ,如下 :
图片
设置好环境之后,然后对项目重新进行打包 。打包完成后,生成了新的 nacos-server.jar,如下:
图片
用这个 jar 包替换掉官方压缩包中的 jar,然后启动 nacos 即可。
4. 访问
启动成功之后,我们就可以直接访问 nacos 了,用法和平时用法都一样,不同的是 ,在创建配置文件的时候 ,文件名有一个固定的前缀 cipher-aes-,有了这个前缀,这个配置文件就会自动加密,否则就不会加密 。
例如我现在创建如下配置文件 :
图片
创建完成后,我们去数据库中看一下这个配置文件:
图片
可以看到,这个 content 字段已经是一个加密的字符串了(如果没有我们没有加密 ,则 content 字段保存的就是明文 name=javaboy)。
现在我们创建一个项目,来加载这个加密的配置文件。
创建项目时候 ,选择 Nacos Configuration ,如下 :
图片
创建好之后,记得手动加上刚刚的那个加密插件的依赖(解密的时候会用到)。
项目名称记得设置为 cipher-aes-nacos :
复制# 应用名称 spring.application.name=cipher-aes-nacos # 应用服务 WEB 访问端口 server.port=80801.2.3.4.其他都正常配置即可 。
Tags:
转载:欢迎各位朋友分享到网络,但转载请说明文章出处“信息技术视野”。http://www.bziz.cn/news/641d599353.html
相关文章
勒索软件即服务的兴起与网络攻击的商业化
系统运维勒索软件的风险正在影响企业的核心业务。数据安全治理供应商Netwrix公司高级副总裁Jeff Warren指出,认识到勒索软件运营商越来越成功的关键因素,并了解如何准备有效的纵深 ...
【系统运维】
阅读更多为什么数据中心是游戏的未来
系统运维我们生活在2023年,这一年人们对数字化、自动化的生活方式和蓬勃发展的游戏环境有着极大的兴趣。印度拥有4.21亿活跃的在线游戏玩家,是游戏人口最丰富的国家之一。然而,随着游戏空间的不断扩大,构建足够的 ...
【系统运维】
阅读更多深入浅出 OkHttp 源码解析及应用实践
系统运维一、背景介绍在生产实践中,常常会遇到这样的场景:需要针对某一类 Http 请求做统一的处理,例如在 Header 里添加请求参数或者修改请求响应等等。这类问题的一种比较优雅的解决方案是使用拦截器来对请 ...
【系统运维】
阅读更多
热门文章
最新文章
友情链接
- 多款热门 Chrome 扩展程序存在明文传输风险,用户隐私安全受威胁
- 恶意 AI 模型正掀起网络犯罪新浪潮
- GitHub Actions漏洞攻击来袭,安全意识强的企业也难幸免
- W7手动还原系统教程(一步步教您如何使用W7手动还原系统,保护和修复您的计算机)
- 花漾搜索答题教程(掌握花漾搜索的技巧,快速解答各类题目)
- 戴尔科技 VMware Tanzu 加快基础设施现代化进程满足您的业务需求
- 探索bcd-458wdvmu1的卓越性能和功能(一款引领技术创新的多功能设备)
- 苹果6s升级iOS11的体验(以苹果6s为例,探索iOS11的新特性和性能提升)
- 新型 PumaBot 僵尸网络瞄准 Linux 物联网设备窃取 SSH 凭证并挖矿
- 技嘉降BIOS教程(教你轻松降级技嘉BIOS,解决电脑问题) 香港物理机b2b信息平台亿华云网站建设云服务器源码库企业服务器