实际上,需要对项目的某些配置信息进行加密,以减少敏感信息泄漏的风险。例如,当使用DRUID时,您可以基于基于公共 - 私有键的加密方法对数据库密码进行加密。
但是,更常见的是,还需要加密敏感信息,例如REDIS密码和MQ密码,此时并不那么方便。本文介绍了Java类库Jasypt,这也是基于配置文件信息的演示春季启动项目。
让我们首先创建一个简单的春季启动项目,并构建一个加密数据的方案。
不管想法方法或官方网站如何,首先创建一个春季启动项目,核心依赖性是:
创建配置文件类ConfigProperties:
配置文件中的配置属性被注入此类供后续使用。
创建一个控制器类以测试和验证是否可以正常运行:
对应于configproperties类,应用程序中的配置。专业如下:
此时,启动项目和访问控制器,可以正常打印出配置信息,表明程序可以正常运行。
但是,配置文件直接显示密码项。如果其他人看到配置文件,则可能导致密码泄漏。
为了响应上述情况,我们通常会加密敏感信息,以避免曝光清晰的文本密码信息并提高安全级别。
加密加密的基本思想是:配置文件中的存储加密内容,解析配置文件注入时解密。
但是,如果您获得了项目源代码,则会知道可以解密加密算法和秘密密钥。这里的加密只是安全保护层,但不是灵丹妙药。
让我们看看如何基于jasypt进行加密。
以下基于上述弹簧启动项目。
使用不同版本的JASYPT是不同的。这是基于版本3.0.4,JDK8,Spring Boot 2.5.5。
使用之前,首先检查JDK8 JRE中是否安装了无限长度的JCE版本,否则在执行加密操作时将抛弃解密失败。
输入$ java_home/jre/lib/安全目录以查看local_policy.jar.jar和us_export_policy.jar是否包括。如果不包括在内,请通过Oracle的官方网站下载,下载地址:https://wwww.oracle.com/Java/Technologies/Javase-JCE8-DOWNLOADS.html。
下载文件是:jce_policy-8.zip
该文件包含三个文件:
检查$ JAVA_HOME/JRE/LIB/SECurity Directory中是否有两个JAR软件包文件。如果没有,请复制它,如果有任何覆盖范围。
简单地引入JASYPT对Spring Boot的依赖。只需介绍以下依赖项:
目前,JASYPT组件的自动配置已生效,仅需要加密的数据。
为了促进密码的加密,您还可以在pom.xml中的构建元素中介绍相应的插件。这将稍后使用:
在这一点上,所有准备工作均已完成。
有很多方法可以加密内容的内容。这里选择了两种方法来介绍。
方法1:单位测试密文;
构建以下单元测试类,请使用默认实例化字符串centencryptor来加密密码:
其中,“ admin123”是要加密的内容。执行上述过程,您可以打印加密内容。这种加密内容的形式使用默认值。
方法两个:通过maven插头生成密码文本-in
上面已经引入了JASYPT的Maven插头 - 可以通过生成密码生成。
步骤1:将加密密码添加到配置文件:
然后修改需要在配置文件中加密的数据。添加“ dec(”,在数据末尾添加“添加”),修改如下:
此处添加的DEC()是告诉插头-in。需要对内容的这一部分进行加密。注意这里的关键字是DEC。
步骤2:Maven命令,加密上述数据
以下命令在命令中执行:
目前,查看配置文件中的conf.password数据已成为:
请注意,原始DEC成为ENC,原始密码成为加密密码。
目前,如果要查看清晰的文本,则可以执行以下命令:
该命令不会将配置文件中的密文修改为明亮的文本,而仅在控制台上输出显式结果。
在上述操作之后,所有修改步骤都已完成,并且只需要激活系统。
密码传输方法完成上述步骤,直接启动系统并访问相应的请求,您会发现可以成功打印原始密码。
在上面的示例中,我们将加密密码放在application.properties文件中。这是不安全的。如果您检查代码,您将知道如何解密。通常,可以使用另一种表单传递参数:在启动命令中传输密码。
例如:
这样,密码就不需要存储在代码中,从而在一定程度上提高了安全性。当然,您还可以传递环境变量,以便甚至开发人员也无法获取生产密码。
关于JASYPT的使用和春季启动的集成,更多的内容也可以参考官方文档描述。如果您的项目中存储了许多密码,那么确实有必要考虑使用类似的框架进行加密处理。
示例源代码地址:https://github.com/secbr/springboot-lll/tree/master/springboot-jasypt
官方源代码地址:https://github.com/ulisesbocchio/jasypt-dring-boot
博客作者简介:“ Springboot Technology Inner Book”技术书籍作者,喜欢学习技术,撰写技术干货文章。
公共帐户:博客作者的公共帐户“计划的新愿景”,欢迎关注?
技术交流:请联系博客微信:Zhuan2quan