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
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);
}
}
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.