1. 程式人生 > 其它 >springboot專案使用jasypt配置檔案明文加密

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