Générer la clé SSL
Nous allons générer un keystore contenant une clé pour l'application Spring Boot.
Pour cela, nous nous servons du programme "keytool" installé par défaut dans Java dans le répertoire bin du JDK ou du JRE.
- Lancer la commande suivante à la racine du projet Spring Boot :
keytool -genkey -alias [nom de la clé] -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650, en remplaçant
[nom de la clé]
par le nom de l'application
- Saisir et confirmer le mot de passe de la clé
- Saisir le nom de l'application à la 3è question
- Répondre aux autres questions sans obligatoirement mettre de valeur
- Répondre à la dernière question par "yes"
keystore.p12
a été généré à la racine du projet.
Nous pouvons vérifier le contenu de ce keystore :
keytool -list -v -keystore keystore.p12 -storetype pkcs12Cette commande affiche les informations de la clé.
Configurer Spring Boot
Nous indiquons à SpringBoot que nous utilisons le protocol HTTPS à l'aide de la clé que nous avons généré.
- Dans le fichier
src/main/resources/application.yml
, ajouter les lignes suivantes :
server: port: 9000 ssl.key-store: keystore.p12 ssl.key-store-password: [mot de passe] ssl.keyStoreType: PKCS12 ssl.keyAlias: [nom de l'alias], avec :
- 9000 : le port HTTPS de Tomcat
- keystore.p12 : le fichier de la clé que nous avons générée
- [mot de passe] : le mot de passe saisi lors de la création de la clé
- [nom de l'alias] : le nom de la clé que nous avons défini lors de sa création
Lancer l'application
- Relancer l'application basée sur Spring Boot, via la commande :
mvn spring-boot:run
- Si l'exception
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
apparaît, cela veut dire que le mot de passe saisi dans le fichierapplication.yml
ne correspond pas à celui de la clé - Accéder à la page d'accueil de l'application en utilisant le protocole HTTPS, c'est à dire en utilisant
https://localhost:9000/[application]
au lieu dehttp://localhost:8080/[application]