网站首页 > 精选教程 正文
在分布式架构中,配置管理是至关重要的一环。Nacos作为一种强大的配置中心,可以帮助我们集中管理配置文件。然而,某些敏感配置(如数据库IP、用户名、密码)直接暴露在配置文件中存在安全风险。为了解决这个问题,我们可以使用 Jasypt 来对敏感信息进行加密,并在运行时解密。本文将介绍如何结合 Spring Cloud Nacos 和 Jasypt 来实现配置内容的加密和解密。
环境准备
Spring Boot 2.x (Spring Cloud 版本可选)
Nacos 2.x
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);
}
}
启动应用,连接数据库是可以正常的。
猜你喜欢
- 2024-12-03 加密算法之AES
- 2024-12-03 盘点几个安卓逆向之常用加密算法
- 2024-12-03 记一次排查线上MySQL死锁过程,不能只会curd,还要知道加锁原理
- 2024-12-03 Java实现对称加密----AES和DES加密、解密
- 2024-12-03 基于Vue.js的http网站如何实现帐号密码加密传输?
- 2024-12-03 3. SpringBoot与Shiro整合:密码加密和解密
- 2024-12-03 常用的加密算法介绍——AES
- 2024-12-03 SpringBoot中如何灵活的实现接口数据的加解密功能?
- 2024-12-03 数字签名的概念入门和Java代码实现
- 2024-12-03 信息加密系列 | A1Z26密码多语言实现
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)