Dans le cadre d'une exécution d'un WAR en cours de build, pour coller à un contexte d'exécution réel, il peut être intéressant de faire tourner le serveur d'application Tomcat en HTTPS.

Pour cela, il suffit d'ajouter la ligne httpsEnabled=true au plugin gretty dans le fichier build.gradle, comme ceci :

gretty {
    ...
	httpsEnabled = true
	...
}

Cela fera démarrer automatiquement l'application sur un deuxième port (par défaut 8443) en parallèle de l'exécution http classique.

Si vous souhaitez démarrer l'application uniquement en https, il faut également ajouter la ligne httpEnabled=false.


Dans ce mode de configuration, Gretty génère automatiquement un certificat auto-signé à chaque exécution pour démarrer l'application en https.

 

Cela peut poser problème si vous avez des tests automatisés qui doivent se connecter à votre application, car le certificat à fournir sera différent à chaque exécution.

Une solution est de forcer le keystore utilisé pour le démarrage, pour que Gretty ne génère pas de clé mais utilise directement le keystore fourni.

La configuration devrait alors ressembler à ceci :

gretty {
    ...
	httpsEnabled = true
	sslKeyStorePath = 'c:\\chemin\\mon.keystore'
	sslKeyStorePassword = 'mon_mot_de_passe'
	...
}

Attention, le keystore doit impérativement contenir une clé fournie par un CN nommé localhost.

Le problème est alors que dans ce cas, le certificat correspondant ne peut être utilisé que pour les connexions entrantes spécifiant "localhost" comme nom d'hôte, ce qui limite fortement les possibilités de tests.

 

Si vous souhaitez pouvoir appeler votre application avec des noms DNS ou IP externes, voici une commande pour ajouter une clé permettant de le faire à votre keystore :

keytool -genkeypair -keystore "c:\chemin\mon.keystore" -dname "CN=localhost" -keypass mon_mot_de_passe -storepass mon_mot_de_passe -keyalg RSA -alias mon_alias -ext SAN=dns:nom_dns_de_la_machine,dns:localhost,ip:X.X.X.X

Bien sûr, il faut remplacer la partie "-ext SAN=" par les informations pertinentes à la machine.

 

Références utiles : 

http://akhikhl.github.io/gretty-doc/HTTPS-support.html - Documentation de la configuration du support HTTPS de Gretty

http://akhikhl.github.io/gretty-doc/Gretty-configuration.html - Documentation générale de Gretty

  • Aucune étiquette