SpringBoot配置项加密Jasypt的正确使用
我给公司搭框架的时候选用了时下流行的springboot,大家都知道springboot的配置文件采用.yml格式的文件,如果有多个环境,还可以多个配置文件区分存放,然后打包成jar再指定对应的环境来运行,不同环境的配置文件都在这个jar里面,这样一来问题就来了,如果不相干人等拿到这个jar,那生产环境的配置(如数据库连接地址帐户密码)就被暴露出去,所以保险办法就是给这些配置项加一下密,别人拿到了文件也没法解密。
网上找了一圈这方面开源的加密组件,做得比较好的是jasypt( https://github.com/ulisesbocchio/jasypt-spring-boot),使用方法它这里面也介绍得很详细了。
开始的时候,我也是百度了一些关于这个jasypt的文章,不过我觉得这些文章可能会有误导的地方,jasypt其实使用的是可逆加密算法,需要一个盐值,这个盐值是在加密和解密需要的,很重要,jasypt的作者建议是把这个盐值放在系统属性、命令行或是环境变量来使用,而不是放在配置文件,而我看到网上的文章,基本没有注意到这个问题,都是放在配置文件里面,这样导致加密就没有意义了,有了盐值,一样可以解密你的密文。
希望看到这篇文章的人能注意到这个问题,如有不当请指出,勿喷。