项目中application.yml 配置文件的各种链接的username,password的值都是明文的,其实存在一定的安全隐患,这是可以使用jasypt 的方式进行明文加密,
需要注意的是 盐值和密文分开保存
参考学习-1
参考学习-2
下面实现最简单的配置
项目是springboot 框架
1.应用pom 文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
2.yml 配置中添加 jasypt的盐值
盐值用来加解密的,但是配置再这里明显是不合适的,因为知道了盐值,也就可以加解密了,相当于没有使用jasypt,参考这篇文章: jasypt加密 的方式 把盐值和密文分开保存
jasypt:
encryptor:
password: 123456789
3.使用jasypt 类加密明文
直接使用test生成密文是其中一种方式,其它方式 参考 参考这篇文章: jasypt加密
@Test
@Test
public void test(){
StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
//盐值
standardPBEStringEncryptor.setPassword("Saltvalue");
//加密明文
String code = standardPBEStringEncryptor.encrypt("加密密文");
//第二次test,解密第一次test的密文
System.out.println(standardPBEStringEncryptor.decrypt("uiqiG5IN/zZLExCSfnemxGZrIG9kStej"));
System.out.println("code=" + code);
}
4.将生成的code配置到yml
test:
code: ENN(CBkS9ftxXVcLlg41W5+e+yHLPl8cSyzL)
5.使用加密后的值
@value("${test.code}")
String code;
2022-01-26 更新------------------------------------
盐值和密文分开存储
之前是把盐值存储在配置文件实际上是否加密都成了问题了
盐值应该放在系统属性、命令行或是环境变量来使用
war包和jar包 两种方式是项目中实际用到的, 其它的参考
war包的项目
配置在tomcat 的配置文件 tomat/bin/Catalina.sh 的JAVA_OPTS值中 -Djasypt.encryptor.password=${salt}
启动tomcat 即可
jar包的项目
添加在start.sh 启动脚本中
java -jar xxx.jar --jasypt.encryptor.password=${salt}
执行脚本即可
war 包项目部署到tomcat 配置jasypt
实际就是tomcat的启动参数配置
到Tomcat的bin目录下,打开文件catalina.sh 添加jasypt.encryptor.password=“${salt} ”
https://blog.csdn.net/m0_59092234/article/details/124079663
相关文章
暂无评论...