SpringBoot集成ENC對配置文件進行加密的流程步驟
配置文件加密,集成ENC
引入POM依賴
<!-- ENC配置文件加密 --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency>
【注意】開始使用的3.1.5版本,啟動報錯:
Reason: org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'spring.redis.password' to java.lang.String
報錯原因:因為3.x版本的默認加密算法變了,所以對應(yīng)配置文件加密算法配置得修改,同時加密的方法也得用新的加密算法計算出加密字符串。
使用工具類對明文數(shù)據(jù)進行加密處理,使用完后為了安全起見,可以刪除加密鹽值
package com.basic.test; import org.jasypt.util.text.BasicTextEncryptor; import org.junit.Test; /** * ClassName: CryptTest * Package: com.basic.test * Description: * * @Author 王涵 * @Date 2024/12/17 14:18 * @Version 1.0 */ public class CryptTest { /** * 加密鹽值,使用完成后進行刪除,或者不能提交到`生產(chǎn)環(huán)境`,比如: */ private final static String PASSWORD = "basic"; @Test public void encTest() { BasicTextEncryptor encryptor = new BasicTextEncryptor(); // 用于設(shè)置加密密鑰。密鑰是用于加密和解密字符串的關(guān)鍵信息。 encryptor.setPassword(PASSWORD); // 明文1 String name_encrypt = "wwwbaiducom"; // 明文2 String password_encrypt = "123456"; // 明文加密 String encrypt1 = encryptor.encrypt(name_encrypt); String encrypt2 = encryptor.encrypt(password_encrypt); System.out.println("明文加密1:" + encrypt1); System.out.println("明文加密2:" + encrypt2); // 密文解密 String decrypt1 = encryptor.decrypt(encrypt1); String decrypt2 = encryptor.decrypt(encrypt2); System.out.println("密文解密1:" + decrypt1); System.out.println("密文解密2:" + decrypt2); } }
將加密后的密碼配置到配置文件,使用
ENC()
包裹。不需要ENC時可以直接寫密碼,不用ENC包裹即可
# 主庫數(shù)據(jù)源 master: url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: ENC(dboFmyYdJOKJYKt1DX/jmzPBcipbHHeP)
運行時配置
打開Run/Debug Configuratios
打開
Modify options
選擇Add VM Optiosn
配置
VM Options
為自己的加密鹽值
啟動類配置@EnableEncryptableProperties
package com.basic; import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; /** * @Author WangHan * 心中那自由的世界,如此的清澈高遠。 * @Date 2024/12/6 14:47 * @Description 啟動程序 */ @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) @EnableEncryptableProperties public class BasicApplication { public static void main(String[] args) { // 熱部署生效 true 開啟熱部署 false 關(guān)閉熱部署 System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(BasicApplication.class, args); System.out.println("(????)?? 基礎(chǔ)框架啟動成功 ?(′?`?)?"); } }
jar包運行指定加密規(guī)則
cd /opt/home/test/ nohup java -Xms512m -Xmx512m -jar -Djasypt.encryptor.password=0tjtdBL6Lwk73GCLVnD2gc1rDbfgCX test-base.jar --spring.profiles.active=dev > test-base.out 2>&1 & echo start test-base
部署到tomcat
export JAVA_OPTS="-Djasypt.encryptor.password=0tjtdBL6Lwk73GCLVnD2gc1rDbfgCX"
以上就是SpringBoot集成ENC對配置文件進行加密的流程步驟的詳細內(nèi)容,更多關(guān)于SpringBoot ENC配置文件加密的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot實現(xiàn)固定和動態(tài)定時任務(wù)的三種方法
定時器是我們項目中經(jīng)常會用到的,本文主要介紹了SpringBoot實現(xiàn)固定和動態(tài)定時任務(wù)的三種方法,具有一定的參考價值,感興趣的可以了解一下2023-09-09如何解決org.apache.jasper.JasperException:無法為JSP編譯類詳解
這篇文章主要給大家介紹了關(guān)于如何解決org.apache.jasper.JasperException:無法為JSP編譯類的相關(guān)資料,原因可能是JSP文件的語法錯誤、類路徑問題或其他配置問題,建議檢查JSP文件的語法、類路徑配置和其他相關(guān)配置,需要的朋友可以參考下2023-06-06Java并發(fā)系列之ConcurrentHashMap源碼分析
這篇文章主要為大家詳細分析了Java并發(fā)系列之ConcurrentHashMap源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03使用maven-archetype-plugin現(xiàn)有項目生成腳手架的方法
這篇文章主要介紹了使用maven-archetype-plugin現(xiàn)有項目生成腳手架的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11