springboot项目使用jasypt配置文件明文加密

jasypt配置文件明文加密

最近有个springboot项目上线前进行安全检测,使用fortify扫描出配置文件的明文存储安全漏洞(Password Management: Password in Configuration File)
于是在各个博客中看到使用jasypt进行加密,自己实现后发现还是挺方便简单的,自己做个总结并当作笔记记录下来。

实现配置存储的明文加密只需要以下几步:

一、项目中引入依赖(Maven)

<dependency>
  <groupId>com.github.ulisesbocchio</groupId>
  <artifactId>jasypt-spring-boot-starter</artifactId>
  <version>1.14</version>
</dependency>

二、自行对密码进行加密

引入依赖后,找到自己的maven库的地址,可直接在地址上cmd,也可直接cmd加上依赖的全路径进行命令加密,如下:

java -cp E://repository/org/jasypt/jasypt/1.9.2/jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="testpwd" password=TEST@123 algorithm=PBEWithMD5AndDES
说明:
	input:需要加密的明文密码
	password:加密密钥

执行命令后,会回显以下内容:
说明:
OUTPUT则是加密后的密码,直接拿去配置即可。

----ENVIRONMENT-----------------
Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.121-b13
----ARGUMENTS-------------------
algorithm: PBEWithMD5AndDES
input: testpwd
password: TEST@123
----OUTPUT----------------------
daEYSmbUgjeKti146U2fDtSSaUbIpQA=

三、进行配置

配置的格式: ENC(加密后的密文)
如:
login.password=ENC(daEYSmbUgjeKti146U2fDtSSaUbIpQA=)
<通过项目的启动,配置上加密密钥后,会根据密钥自行解析成testpwd>

四、配置加密密钥(有两种方式)

1、一种是直接在配置文件进行密钥的配置(但有的人会认为此方式又是一种明文存储)
在这里插入图片描述

2、在启动命令中配置JVM参数
在启动命令中配置JVM参数(jasypt.encryptor.password),注入加密密钥,如:

java -Dfile.encoding=UTF8 -Djasypt.encryptor.password=TEST@123 -jar -Xmx512m settlement.jar

注:在docker容器中密文的密码可以设置成环境变量(如:JASYPT_PASSWORD ),上述命令可以修改为:

java -Dfile.encoding=UTF8 -Djasypt.encryptor.password=${JASYPT_PASSWORD} -jar -Xmx512m settlement.jar

参考文档
https://www.ricston.com/blog/encrypting-properties-in-spring-boot-with-jasypt-spring-boot/
https://github.com/ulisesbocchio/jasypt-spring-boot
https://www.cnblogs.com/zz0412/p/jasypt-001.html


版权声明:本文为qq_42552574原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。