Nacos 配置加密

Nacos 配置加密

nacos配置加密官网

官网介绍太简单,而且GitHub 网络受限,随缘访问。Gitee 发现有镜像仓库,同步的最新版本

Gitee nacos 镜像仓库

但是官网中提到的加密插件,未找到相应的镜像仓库,需要在 GitHub 拉取。

Nacos 插件打包

直接用 idea 打开,必须打包 install 到本地,maven 仓库无该依赖。

新版本的 nacos 集成了达梦数据库,打包时报错,需自行下载达梦驱动,配置路径。

生成后的maven

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

Nacos 源码编译

将上述 maven 依赖,添加到源码config 模块下

修改 console 模块 application.properties 文件,配置 MySQL数据库

新版本的 nacos spring.datasource.platform=mysql 已经弃用,改为 spring.sql.init.platform=mysql

### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.

只需修改配置

spring.sql.init.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos-2.3.0?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=admin123456

修改 distribution 设置 单机启动

这里设置好生成的 jar 包,默认单机启动。

测试加密

上述工作完成后,对整个 nacos 项目整体 clean 、 package 、 install 。

启动 console 模块下的 Nacos 启动类,访问 nacos

按官网文档创建加密配置

  • 打开 Nacos 控制台,点击新建配置。
  • 配置前缀使用cipher-[加密算法名称]-dataId来标识这个配置需要加密,系统会自动识别并加密。例如使用 AES 算法来解密配置:cipher-aes-application-dev.yml。
  • 点击保存,查看数据库

正常你会看到数据库加密内容如下,content 被加密后的配置,encrypted_data_key 秘钥

测试成功后

在控制台项目根目录执行如下命令,distribution 模块 target 目录下 生成 nacos 压缩包

mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U

解压后,按正常流程配置数据源,打开鉴权,启动测试。

微服务配置

nacos 配置文件添加 cipher-aes- 前缀后, 需要修改bootstrap.yml 文件,读取相应的配置中心名称(默认按服务名称读取)

示例如下:

spring:
  application:
    name: xxx
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_HOST:127.0.0.1}:${NACOS_PORT:8848}
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yml
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
        # 重点  
        name: cipher-aes-${spring.application.name}
      username: nacos
      password: nacos
  # 排除避免gateway跟springboot版本冲突
  autoconfigure:
    exclude: org.springframework.cloud.gateway.config.GatewayAutoConfiguration,org.springframework.cloud.gateway.config.GatewayClassPathWarningAutoConfiguration
  profiles:
    active: @profiles.active@
posted @ 2024-02-01 15:02  暮雨寒冬  阅读(1299)  评论(0编辑  收藏  举报