这篇文章主要介绍“怎么用Springboot对配置文件中的敏感信息加密”,在日常操作中,相信很多人在怎么用Springboot对配置文件中的敏感信息加密问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Springboot对配置文件中的敏感信息加密”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
最近公司对软件的安全问题比较在意,要求对配置文件中的敏感信息如数据库密码等进行加密。但是Springboot是一款高度集成的框架,如果仅仅是简单的对数据库密码进行加密了,由于连接数据库的操作是框架自己完成的,这就会造成不小的麻烦。
经过调研,找到了如下方式还比较方便。
该项目用到了jasypt库。原理很简单,通过该库提供的方法进行敏感信息加密,生成密文xxxxx,然后将密文使用ENC()包裹起来。
<!-- jasypt场景启动器依赖 --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency>
配置文件中密码将原来的明文密码改为ENC(密文密码)的样子,如下:
# 原MySQL密码,删掉不用 #spring.datasource.password=xxxx # 加密后的MySQL密码 spring.datasource.password=ENC(BSYVaS0K9UEIIZACPLduGUumokOpB44c==) # 如果是其他需要加密的密码,比如es密码es123456 es.password=ENC(xxxxxxx) # 加密密码所需要的盐(随便写)。为了更加安全,这一行配置不要写在配置文件中,可以写在启动参数中 jasypt.encryptor.password=nmyswls # 指定使用的算法 # 可选算法有:PBEWITHHMACSHA512ANDAES_256、PBEWITHHMACSHA512ANDAES_128、PBEWithMD5AndDES jasypt.encryptor.algorithm=PBEWithMD5AndDES
加密过程中需要使用到盐,盐的设置不要太随意,因为原则上盐不能存储又不能忘记,所以尽量遵循一定的命名规则,供内部人员依据规则判断盐是什么。
# 其中下面运行的jar包为上面maven依赖中所指定的jar包,input参数为需要加密的字符串,password参数为加密所需的盐。 java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="str" password="salt" algorithm=PBEWithMD5AndDES
上述jar包可以从maven中央仓库中下载。
由于该方法是对称加密方式,因此系统在解密的时候同样需要此盐,但是盐一定不能对外暴露。因此在第二步配置文件中并没有配置解密所需的盐,而是改用在系统启动时通过命令行传参的方式传入。
本方案依赖jasypt库,可以对配置文件中任意字符串进行加密,不仅仅局限于密码,更不仅仅局限于mysql密码。
由于采用对称加密算法,如果泄露了加密需要的盐(上文提到的jasypt.encryptor.password参数),很容易对密码进行解密。因此加密用的盐需要写在配置文件外面,启动参数中。
依赖:
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>1.16</version> </dependency>
在application.properties或者相应的proffile的properties文件
其中
jasypt.encryptor.password = klklklklklklklkl 是加解密的盐
enc是加密变量使用的特殊符号.
到apollo中如果使用了apollo配置中心
代码执行的效果
到此,关于“怎么用Springboot对配置文件中的敏感信息加密”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。