资讯专栏INFORMATION COLUMN

使用Jasypt对SpringBoot配置文件加密

codergarden / 1450人阅读

摘要:所以这里我们就需要对数据库的用户名和密码进行加密,这也是本文的由来。本文采用对配置文件加密的相关方法,其实呢,也还有其他方案,具体的会在后面的相关文章中说明。

前言

在日前安全形势越来越严重的情况下,让我意识到在项目中存在一个我们经常忽略的漏洞,那就是我们的项目的配置文件中配置信息的安全,尤其是数据库连接的用户名和密码的安全。所以这里我们就需要对数据库的用户名和密码进行加密,这也是本文的由来。本文采用Jasypt对Spring Boot配置文件加密的相关方法,其实呢,也还有其他方案,具体的会在后面的相关文章中说明。

引入jasypt

    com.github.ulisesbocchio
    jasypt-spring-boot-starter
    2.0.0
1.生成要加密的字符串 1.1 将数据库的用户名和密码进行加密
@Test
    public void contextLoads() {
        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        //加密所需的salt(盐)
        textEncryptor.setPassword("1Qaz0oKm");
        //要加密的数据(数据库的用户名或密码)
        String username = textEncryptor.encrypt("root");
        String password = textEncryptor.encrypt("root");
        System.out.println("username:"+username);
        System.out.println("password:"+password);
    }

输出信息

username:NZmLHOOHX0SEjc285iG9YQ==
password:1JByM5wu5o+9H1Ba2o++Pg==
2019-06-14 14:55:49.863  INFO 8904 --- [       Thread-3] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService "applicationTaskExecutor"
2019-06-14 14:55:49.863  INFO 8904 --- [       Thread-3] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit "default"
2019-06-14 14:55:49.863  INFO 8904 --- [       Thread-3] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2019-06-14 14:55:49.878  INFO 8904 --- [       Thread-3] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
1.2. 或者使用Maven下载好的jar包加密Mavenorgjasyptjasypt2.0.0jasypt-2.0.0.jar
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI password=1Qaz0oKm algorithm=PBEWithMD5AndDES input=root

输出信息

----ENVIRONMENT-----------------
Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.171-b11

----ARGUMENTS-------------------
input: root
algorithm: PBEWithMD5AndDES
password: 1Qaz0oKm 

----OUTPUT----------------------
NZmLHOOHX0SEjc285iG9YQ==

拷贝-OUTPUT-下的结果即可

2.配置properties文件

将生成的加密串配置ENC(加密串)到application.properties中

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
    username: ENC(GHK23XVFNHoQQ97vIW523Q==)
    password: ENC(aTKef0XcG05Cfzao92EqqQ==)
    data-username: com.mysql.cj.jdbc.Driver
  jpa:
    show-sql: true
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    database: MYSQL
    hibernate:
      ddl-auto: update
jasypt:
  encryptor:
    password: 1Qaz0oKm #加密所需的salt(盐)
    #algorithm: PBEWithMD5AndDES   # 默认加密方式PBEWithMD5AndDES,可以更改为PBEWithMD5AndTripleDES

加密方式对应的类为BasicTextEncryptor和StrongTextEncryptor

private final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();

    public BasicTextEncryptor() {
        this.encryptor.setAlgorithm("PBEWithMD5AndDES");
    }
private final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();

    public StrongTextEncryptor() {
        this.encryptor.setAlgorithm("PBEWithMD5AndTripleDES");
    }

3.部署时配置salt(盐)值

1. 为了防止salt(盐)泄露,反解出密码.可以在项目部署的时候使用命令传入salt(盐)值

java -jar -Djasypt.encryptor.password=1Qaz0oKm xxx.jar

2. 或者在服务器的环境变量里配置,进一步提高安全性

打开/etc/profile文件
vim /etc/profile

文件末尾插入
export JASYPT_PASSWORD = G0CvDz7oJn6

编译 
source /etc/profile

运行 
java -jar -Djasypt.encryptor.password=${JASYPT_PASSWORD} xxx.jar

下面是一个我自己的具体实现:https://github.com/eelve/jasypt,使用Jasypt对数据库用信息加密后,可以成功连接上数据库

官方地址:https://github.com/ulisesbocchio/jasypt-spring-boot

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76060.html

相关文章

  • SpringBoot项目配置文件中密码的加密

    摘要:配置文件密码加密配置秘钥加密算法从版本开始,默认的加密解密算法已更改为以下版本默认为上述不配置的话,其默认的秘钥也是以上的并不是很多人理解的盐,这是加密密钥。思考以上的步骤中,根据的用法,基本上完成了对配置文件中密码的加密。作者:追梦1819原文:https://www.cnblogs.com/yanfei1819/p/15565862.html版权声明:本文为博主原创文章,转载请附上博文链...

    frontoldman 评论0 收藏0
  • 基于SpringCloud的Microservices架构实战案例-配置文件属性内容加解密

    摘要:基于的架构实战案例配置文件属性内容加解密使用过配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些。,官方给出的释意是项目也采用此加密组件,结合使用。 基于SpringCloud的Microservices架构实战案例-配置文件属性内容加解密 使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些。打开appl...

    dantezhao 评论0 收藏0
  • application.properties数据库敏感信息加密这么简单?

    摘要:前些天就有了一个满足漏洞检测的需求,想要把数据库的明文敏感信息加密,其实也就是密码加密,所以也就有了这篇文章,我的项目是结构,修改其实也挺简单,废话少说,上代码。所以您有什么更好的加密方法欢迎留言 写在前面 俗话说:顾客是上帝,身为程序员的我有时会直接对接客户方提出的需求,毕竟我处在提供服务的一方,所以我也会尽量的满足临时的要求。前些天就有了一个满足漏洞检测的需求,想要把数据库的明文敏...

    Lycheeee 评论0 收藏0
  • SpringBoot 入门简介

    摘要:这里使用的是数据库启动类上加上注解在启动类中添加对包扫描扫描多个包下的可以有以下几种方法扫描会自动加载相关配置,数据源就会自动注入到中,会自动注入到中,可以直接使用。有配置文件下的使用扫描多个包下的可以有以下几种方法扫描 Spring-Boot 学习笔记 1 Spring-Boot 介绍 1.1 什么是Spring-Boot Spring-Boot是由Pivotal团队提供的全新框架...

    chuyao 评论0 收藏0

发表评论

0条评论

codergarden

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<