自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Nacos 中的配置文件如何實現(xiàn)加密傳輸

開發(fā) 前端
用了 Nacos 的配置文件加密插件之后,我們在 Nacos 管理頁面上配置的配置文件,將會以加密的密文形式存儲在數(shù)據(jù)庫中,也會以密文的形式傳輸?shù)娇蛻舳?,然后在客戶端自動完成解密操作。大致上就是這樣一個過程。接下來我們就來看看具體的用法。

小伙伴們知道,Spring Cloud Config 很早就提供了配置文件的加解密功能,并且支持對稱加密和非對稱加密兩種不同的模式。Nacos 作為分布式配置中心+服務(wù)注冊中心的合體,在配置文件加密這塊一直差點意思,不過好在,如果你使用的 Nacos 版本大于 2.0.4 這個版本,那么現(xiàn)在也可以通過插件的方式來實現(xiàn)配置文件加密了。

1. 配置文件加密

松哥在之前的微服務(wù)視頻中講過,Spring Cloud Config 的對稱加密和非對稱加密,加密后的文件格式類似下面這樣:

name={cipher}密文
password={cipher}密文

可以看到,在 Spring Cloud Config 中,對配置文件的加密是針對字段一個一個加密的。

而 Nacos 中的加密,則是對整個配置文件的內(nèi)容進行加密,這點和 Spring Cloud Config 不同。

Nacos 中是通過 SPI 的機制抽象出加密和解密的操作,Nacos 默認(rèn)提供 AES 對稱加密的實現(xiàn),不過用戶也可以自定義加解密的實現(xiàn)方式。

在 Nacos 服務(wù)端啟動的時候就會加載所有依賴的加解密算法,然后通過發(fā)布配置的 dataId 的前綴來進行匹配是否需要加解密和使用的加解密算法。

客戶端發(fā)布的配置會在客戶端通過 filter 完成加解密,也就是配置在傳輸過程中都是密文的,而控制臺發(fā)布的配置會在服務(wù)端進行處理。

換言之,用了 Nacos 的配置文件加密插件之后,我們在 Nacos 管理頁面上配置的配置文件,將會以加密的密文形式存儲在數(shù)據(jù)庫中,也會以密文的形式傳輸?shù)娇蛻舳?,然后在客戶端自動完成解密操作。大致上就是這樣一個過程。接下來我們就來看看具體的用法。

2. 實踐

首先我們需要下載 nacos 源碼進行編譯,編譯完成之后,需要將之安裝到本地 Maven 倉庫(因為編譯加密插件需要用到 Nacos)。

首先 clone nacos 源碼,如下:

git clone https://github.com/alibaba/nacos.git

下載之后,個人建議用 IDEA 去編譯,操作方便一些(因為后續(xù)還有其他操作)。

所以我們先用 IDEA 打開項目,確認(rèn)項目所需依賴均已下載完畢,然后點擊 install 按鈕,將項目編譯安裝到本地倉庫:

圖片

接下來 clone 配置文件加解密的插件,如下:

git clone https://github.com/nacos-group/nacos-plugin.git

也用 IDEA 打開這個插件項目。這個插件編譯要用到我們剛剛編譯安裝好的 Nacos,但是給的版本號不對,需要我們手動修改下,位置在 nacos-plugin/pom.xml?,修改里邊 Nacos 的版本號,從 2.2.0-SNAPSHOT? 改為 2.2.0-BETA(我剛剛編譯安裝的是這個版本,大家根據(jù)自己的實際情況選擇):

<alibaba-nacos.version>2.2.0-BETA</alibaba-nacos.version>

改完之后也執(zhí)行 install 操作,將所有的插件都安裝到本地倉庫:

圖片

接下來回到一開始的 Nacos 項目中,在 Nacos 項目中引入這個插件的依賴,建議在 config 模塊中引入,如下圖:

圖片

引入內(nèi)容如下:

<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-aes-encryption-plugin</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>

加了這個依賴之后,我們的 Nacos 就具備了配置文件加密功能了。

現(xiàn)在我再改一下 console/src/main/resources/application.properties 配置文件,讓 Nacos 將數(shù)據(jù)存入到本地數(shù)據(jù)庫中,如下:

### 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=123

配置完成后,本地提前準(zhǔn)備好一個名為 nacos_config 的數(shù)據(jù)庫,并執(zhí)行 distribution/conf/mysql-schema.sql 腳本文件,將所需的表先創(chuàng)建出來。

接下來,為項目添加啟動參數(shù),我們以單機而不是集群的方式來啟動 Nacos,如下:

圖片

上圖大家重點看兩個地方,一個是啟動類所處的位置,另外一個則是啟動參數(shù)。

好啦,現(xiàn)在我們就可以像啟動 Spring Boot 項目那樣啟動 Nacos 了。

3. 發(fā)布

如果我們想將項目打包發(fā)布的話,松哥建議大家先從 GitHub 上下載官方的壓縮包,官方的壓縮包里邊,有一個 target 目錄,這個目錄下有一個 nacos-server.jar 文件,這個就是 nacos 的啟動包了。對于這個官方的壓縮包,大家正常配置就行了。

然后,在 IDEA 中,對我們剛剛處理過的 nacos,重新打包,不過記得打包的時候設(shè)置一下環(huán)境,如下:

圖片

設(shè)置好環(huán)境之后,然后對項目重新進行打包。打包完成后,生成了新的 nacos-server.jar,如下:

圖片

用這個 jar 包替換掉官方壓縮包中的 jar,然后啟動 nacos 即可。

4. 訪問

啟動成功之后,我們就可以直接訪問 nacos 了,用法和平時用法都一樣,不同的是,在創(chuàng)建配置文件的時候,文件名有一個固定的前綴 cipher-aes-,有了這個前綴,這個配置文件就會自動加密,否則就不會加密。

例如我現(xiàn)在創(chuàng)建如下配置文件:

圖片

創(chuàng)建完成后,我們?nèi)?shù)據(jù)庫中看一下這個配置文件:

圖片

可以看到,這個 content 字段已經(jīng)是一個加密的字符串了(如果沒有我們沒有加密,則 content 字段保存的就是明文 name=javaboy)。

現(xiàn)在我們創(chuàng)建一個項目,來加載這個加密的配置文件。

創(chuàng)建項目時候,選擇 Nacos Configuration,如下:

圖片

創(chuàng)建好之后,記得手動加上剛剛的那個加密插件的依賴(解密的時候會用到)。

項目名稱記得設(shè)置為 cipher-aes-nacos:

# 應(yīng)用名稱
spring.application.name=cipher-aes-nacos
# 應(yīng)用服務(wù) WEB 訪問端口
server.port=8080

其他都正常配置即可。

好啦,大功告成!Nacos 配置文件加密就實現(xiàn)啦~

責(zé)任編輯:武曉燕 來源: 江南一點雨
相關(guān)推薦

2024-05-27 09:52:00

Nacos加密配置

2011-09-07 14:43:24

2018-05-30 08:31:08

2015-05-20 13:19:23

文件加密影線加密

2009-11-07 14:29:40

2022-02-28 07:37:02

Java配置參數(shù)

2013-07-11 14:50:51

2010-11-09 17:28:27

嗅探嗅探網(wǎng)絡(luò)TFTP

2019-11-22 10:00:53

ICC配置文件Windows 10

2011-03-02 11:23:48

2010-03-29 09:23:00

2020-07-20 14:03:03

Chrome 86加密信息

2011-03-25 17:13:37

Nagios配置文件

2011-02-25 16:39:34

proftpd配置文件

2021-07-08 21:19:04

BashLinux

2010-11-12 09:44:59

Cassandra配置

2021-11-07 14:00:16

JekyllBashAPI后端

2010-03-25 18:09:23

Nginx配置文件

2018-03-16 15:14:08

Android傳輸文件

2021-03-12 08:00:00

Kubernetes工具
點贊
收藏

51CTO技術(shù)棧公眾號