Jasypt est une bibliothèque Java qui permet aux développeurs d’ajouter des capacités de chiffrement de base aux projets avec un minimum d’effort et sans recourir au chiffrement des informations. Pour en savoir plus cliquez ici.
Installation sous Spring Boot
Vous devez d’abord installer les dépendances de Jasypt. Sous Maven cela revient à intégrer le code suivant dans votre fichier pom.xml :
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
N’hésitez pas à vérifier le numéro de la dépendance sous Maven Repository pour travailler avec la dernière version
Vous devez ensuite annoter votre projet avec @EnableEncryptableProperties
de la manière suivante:
import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@EnableEncryptableProperties
@SpringBootApplication
public class ApplicationStart extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(ApplicationStart.class, args);
}
}
Enfin vous pouvez encadrer les éléments sensibles de votre application via l’attribut ENC()
dans vos fichiers de configuration comme indiqué ci-dessous :
spring:
datasource:
url: jdbc:mariadb://localhost:3306/my_database
username: root
password: ENC(E726/iI+PmVt7KWBzfWlATLuK6szwxGZ) <-- le code crypté
driver-class-name: org.mariadb.jdbc.Driver
Clé privée
Pour fonctionner correctement Jasypt a besoin d’une clé privée pour décrypter les éléments. Il existe plusieurs méthodes pour injecter la clé dans un programme Java et la fournir à Jasypt.
Le premier moyen, et à n’utiliser que dans un environnement de développement pour des raisons évidentes de sécurité, est de le placer également en paramètre du fichier de configuration de votre application :
jasypt:
encryptor:
password: up4ke4zRmiDU
Le deuxième moyen est de lancer le programme java avec en paramètre de la ligne de commande la propriété :
java -Djasypt.encryptor.password="up4ke4zRmiDU" -jar target/your-java-application-1.0.0-SNAPSHOT.jar
Le dernier moyen et probablement le plus « safe » est de passer le paramètre en variable d’environnement. Procédez de cette manière pour appeler la variable dans votre fichier de configuration :
jasypt:
encryptor:
password: ${JASYPT_ENCRYPTOR_PASSWORD:}
Vous pouvez tester en ligne de commande la passation du paramètre :
JASYPT_ENCRYPTOR_PASSWORD=up4ke4zRmiDU java -jar target/your-java-application-1.0.0-SNAPSHOT.jar
Comment obtenir une valeur cryptée
Veuillez tout d’abord télécharger un distribuable de Jasypt : télécharger la version 1.9.2.
Décompilez le fichier téléchargé à la racine de votre lecteur C ou D, afin d’éviter les problèmes liées aux noms de fichier/dossier dans l’arborescence. Puis rendez vous dans le dossier : C:\jasypt-1.9.2\bin
Lancez une commande powershell en tapant dans la barre d’adresse de l’explorateur de fichier: powershell
. Cela aura pour effet de vous ouvrir une commande directement dans le dossier concerné.
Enfin exécutez la ligne de commande suivante pour générer une valeur cryptée :
.\encrypt.bat input=password password=up4ke4zRmiDU
Votre commande devrait vous restituer le résultat suivant :
----ENVIRONMENT-----------------
Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 11.0.1+13-LTS
----ARGUMENTS-------------------
input: password
password: up4ke4zRmiDU
----OUTPUT----------------------
E726/iI+PmVt7KWBzfWlATLuK6szwxGZ
0 commentaire