Criptografia de informações confidenciais do arquivo de configuração do SpringBoot

Prefácio
O conteúdo do arquivo de configuração SpringBoot geralmente é exibido em texto simples, e a segurança é relativamente baixa. Em application.properties ou application.yml, como a senha de login mysql, senha de login redis e chaves de terceiros, estão todas resumidas. Desta vez, é o Ministério da Segurança Pública e alguns outros departamentos de segurança antes de escanearmos nosso código para fazer retificações. Aqui está uma Os componentes de criptografia e descriptografia melhoram a segurança de algumas configurações de atributos.
jasypt foi escrito por um deus estrangeiro, um kit de ferramentas sob springboot

O conteúdo do artigo é curto e fácil de entender.

druid também pode fazer criptografia de texto simples de banco de dados, qualquer configuração do jasypt pode ser criptografada.

Texto principal
Apresente o uso de todas as versões de frameworks e middleware
Insira a descrição da imagem aqui
para adicionar dependências de maven desta vez

<dependency>
		<groupId>com.github.ulisesbocchio</groupId>
		<artifactId>jasypt-spring-boot-starter</artifactId>
		<version>2.1.0</version>
	</dependency>

A versão 2.1.0 é a versão mais recente quando eu a uso. Verifique a última versão

https://github.com/ulisesbocchio/jasypt-spring-boot

Adicione o seguinte conteúdo ao arquivo de configuração application.properties (usado para criptografia e descriptografia, qualquer caractere pode ser alterado)

jasypt.encryptor.password: EbfYkitulv73I2p0mXI50JMXoaxZTKJ0

Gere a chave secreta criptografada no caso de teste

public class Encryptor {
   
    @Test
    public void getPass() {
        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        textEncryptor.setPassword("EbfYkitulv73I2p0mXI50JMXoaxZTKJ0");
                String url = textEncryptor.encrypt("jdbc:oracle:thin:xxxx");
        String name = textEncryptor.encrypt("数据库账号");
        String password = textEncryptor.encrypt("数据库密码");
//解密内容
//        String url = textEncryptor.decrypt("");
//        String name = textEncryptor.decrypt("");
//        String password = textEncryptor.decrypt("4EyN0xDLbnP2lsaayjl8fbIctj5bVIdD");
 
 
        System.out.println(url + "----------------");
        System.out.println(name + "----------------");
        System.out.println(password + "----------------");
        Assert.assertTrue(name.length() > 0);
        Assert.assertTrue(password.length() > 0);
    }
}

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
1. Você pode usar o comando para passar o valor do sal quando o projeto for implantado

java -jar -Djasypt.encryptor.password=G0CvDz7oJn6 xxx.jar

2. Ou configure-o nas variáveis ​​de ambiente do servidor para melhorar ainda mais a segurança

打开/etc/profile文件
vim /etc/profile
 
文件末尾插入
export JASYPT_PASSWORD = G0CvDz7oJn6
 
编译 
source /etc/profile
 
运行 
java -jar -Djasypt.encryptor.password=${JASYPT_PASSWORD} xxx.jar

Neste ponto, implementamos a criptografia de informações confidenciais no arquivo de configuração springboot. Não é simples.

Acho que você gosta

Origin blog.csdn.net/weixin_42849706/article/details/109636962
Recomendado
Clasificación