网站首页 > 博客文章 正文
在分布式架构中,配置管理是至关重要的一环。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-11-13 spring boot配置文件敏感字段加密
- 2024-11-13 Spring Boot数据库密码加密的配置方法
- 2024-11-13 Spring Boot安全之application配置信息加密
- 2024-11-13 如何在SpringBoot项目中实现加密?
- 2024-11-13 SpringBoot进阶-SpringBoot如何实现配置文件脱敏?
- 2024-11-13 加密SpringBoot配置文件技巧(加密pdf文件如何解密编辑)
- 2024-11-13 Spring Boot版本和Jasypt版本的兼容性问题?
- 2024-11-13 SpringBoot加密配置属性(springboot配置密码加密)
- 2024-11-13 SpringCloud-OAuth2(二):实战篇(oauth2.0 springcloud)
- 2024-11-13 SpringBoot 配置文件这样加密,才足够安全!
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)