专业的编程技术博客社区

网站首页 > 博客文章 正文

Spring Cloud Nacos + Jasypt 实现配置内容加密教程

baijin 2024-11-13 09:31:49 博客文章 3 ℃ 0 评论

在分布式架构中,配置管理是至关重要的一环。Nacos作为一种强大的配置中心,可以帮助我们集中管理配置文件。然而,某些敏感配置(如数据库IP、用户名、密码)直接暴露在配置文件中存在安全风险。为了解决这个问题,我们可以使用 Jasypt 来对敏感信息进行加密,并在运行时解密。本文将介绍如何结合 Spring Cloud Nacos 和 Jasypt 来实现配置内容的加密和解密。

环境准备

  1. Spring Boot 2.x (Spring Cloud 版本可选)

  2. Nacos 2.x

  3. Jasypt 3.x

1. 引入依赖

首先,需要在pom.xml 中引入 Jasypt 和 Nacos 相关的依赖。

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

</dependency>

<dependency>

<groupId>com.github.ulisesbocchio</groupId>

<artifactId>jasypt-spring-boot-starter</artifactId>

<version>3.0.4</version> <!-- 版本可根据实际情况调整 -->

</dependency>

2. 配置 Nacos 服务端

在 Nacos 的配置中心添加一个配置文件,文件内容可以是.properties

.yaml 格式。为了演示,假设我们使用 properties 格式。

在 Nacos 中添加配置:

spring.datasource.url=ENC(encrypted_url)

spring.datasource.username=ENC(encrypted_username)

spring.datasource.password=ENC(encrypted_password)

注意:ENC() 是 Jasypt 识别加密信息的标记,其中的 encrypted_url、encrypted_username 和 encrypted_password 是加密后的内容。

3. 加密敏感信息

Jasypt 提供了命令行工具来加密和解密数据。使用以下命令来加密你的数据库配置信息:

java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="jdbc:mysql://localhost:3306/dbname" password="设置密码" algorithm=PBEWithMD5AndDES

将此加密结果复制并替换到 Nacos 配置中的 ENC(加密后的内容) 部分。

4. 在 Spring Boot 项目中配置 Jasypt

接下来,需要在 application.yml 或 application.properties 中配置 Jasypt 加密相关的设置。

jasypt:

encryptor:

password: yourSecretKey # 这里的密钥应与加密时使用的一致

algorithm: PBEWithMD5AndDES

5. 启动类配置

Spring Boot 启动类需要添加 @EnableEncryptableProperties 注解,这样 Jasypt 才能解密 ENC() 中的数据。

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.ulisesbocchio.jasypt.springboot.annotation.EnableEncryptableProperties;

@SpringBootApplication

@EnableEncryptableProperties

public class NacosJasyptDemoApplication {

public static void main(String[] args) {

SpringApplication.run(NacosJasyptDemoApplication.class, args);

}

}


启动应用,连接数据库是可以正常的。








Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表