上篇介绍了如何使用jasypt对配置文件中的敏感信息进行加密——Spring Boot加密应用配置文件敏感信息(jasypt)

但那只适合开发环境那么操作,因为jasypt是可逆的,如果知道了加密的salt,就能解出密码,

而如果将salt配置在配置文件中,就如给门上了锁又把钥匙插在锁孔,毫无安全意义

解密API

@Test
	public void testDecrypt() {
		String str = "0S9cYu9xnK/MHezp8mpZOkyIrF59p8p/59/e8hXctl8=";
		StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
		encryptor.setPassword("123456");//这里需要是那salt
		System.out.println("原文:"+encryptor.decrypt(str));
	}

不加盐,菜就不好吃,那如何安全的加盐(salt)呢?方法有不少,一种是在启动时加
具体操作是,开发阶段正常加密,部署时,盐得这么加

jasypt:
  encryptor:
    password: ${JASYPT_ENCRYPTOR_PASSWORD:}

然后打包成jar,启动时加入盐,按如下命令启动,但缺点是会话已关闭,程序就停止运行了

JASYPT_ENCRYPTOR_PASSWORD=yoursalt java -jar xxxx.jar

这就需要以守护进程启动,不妨这样,将上述命令写在一个可执行脚本中,比如s.sh,如何赋予执行权限
再新写一个启动脚本

nohup ./s.sh  > sys.log 2>&1 &

以后端进程的方式启动,将日志输出到sys.log中

还有其他一些方式比如命令行方式加盐、将盐配置到环境变量中等等,没试过
具体请参考:https://github.com/ulisesbocchio/jasypt-spring-boot

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐