springboot專案使用jasypt配置檔案明文加密
技術標籤:springBoot安全規範spring bootmavenjava加密解密安全漏洞
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: [email protected]
----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