Lors du développement et du déploiement de l’applet Java proposée dans l’article Calculateur de fractions rationnelles, il nous est apparu intéressant de la signer afin que l’utilisateur puisse connaître l’origine de celle-ci. De plus, la politique sécuritaire de la Société Oracle préconise de signer les applets pour des raisons de transparence.
Maintenant, ce n’est pas parce qu’une applet est signée qu’elle est digne de confiance mais cela permet néanmoins à l’utilisateur d’en connaître un peu plus que pour une Applet non signée avec laquelle il ne saura même pas d’où elle provient (cf. l’article Que faire si une invite de sécurité est affichée par Java ?).
Pour signer une Applet, il faut générer un certificat au moyen de l’utilitaire keytool fourni avec le JDK au même niveau que la suite des binaires java, javac ou javadoc.
1. Procédure pour la génération du certificat
$ keytool -genkey -alias <votre_alias>
Entrez le mot de passe du fichier de clés : <votre_mot_de_passe>
Ressaisissez le nouveau mot de passe : <votre_mot_de_passe>
Quels sont vos nom et prénom ?
[Unknown]: <vos_nom_et_prénom>
Quel est le nom de votre unité organisationnelle ?
[Unknown]: <votre_organisation>
Quel est le nom de votre entreprise ?
[Unknown]: <votre_entreprise>
Quel est le nom de votre ville de résidence ?
[Unknown]: <votre_ville>
Quel est le nom de votre État ou province ?
[Unknown]: <votre_pays>
Quel est le code pays à deux lettres pour cette unité ?
[Unknown]: <votre_code_pays>
Est-ce CN=<vos_nom_et_prénom>, OU=<votre_organisation>, O=<votre_entreprise>, L=<votre_ville>, ST=<votre_pays>, C=<votre_code_pays> ?
[non]: oui
Entrez le mot de passe de la clé pour <votre_alias>
(appuyez sur Entrée s’il s’agit du mot de passe du fichier de clés) : <votre_mot_de_passe>
Ressaisissez le nouveau mot de passe : <votre_mot_de_passe>
2. Extension de la date de validité
Par défaut, la date de validité est de 6 mois qui peut être augmentée au moyen d’une nouvelle utilisation de keytool pour par exemple la porter à un petit plus de 10 ans :
$ keytool -selfcert -v -alias <votre_alias> -validity 3660
Entrez le mot de passe du fichier de clés : <votre_mot_de_passe>
Nouveau certificat (auto-signé) :
[
Version: V3
Subject: CN=<votre_nom_et_prénom>, OU=<votre_organisation>, O=<votre_entreprise>, L=<votre_ville>, ST=<votre_pays>, C=<votre_code_pays>
…
Validity: [From: Tue Aug 27 10:43:07 CEST 2013,
To: Mon Sep 04 10:43:07 CEST 2023]
Issuer: CN=<votre_nom_et_prénom>, OU=<votre_organisation>, O=<votre_entreprise>, L=<votre_ville>, ST=<votre_pays>, C=<votre_code_pays>
…]
[Stockage de <votre_user_home>\.keystore]
3. Signature de l’Applet avec le certificat généré
La signature de l’Applet livrée dans <votre_fichier_jar> se fait simplement avec l’utilitaire jarsigner fourni dans le JDK.
$ jarsigner -storepass <votre_mot_de_passe> -signedjar <votre_fichier_jar_signé> <votre_fichier_jar> <votre_alias>
Il est possible de vérifier l’Applet signée et en particulier la date de validité au moyen du même l’utilitaire jarsigner.
$ jarsigner -verbose -verify -certs <votre_fichier_jar_signé>
s k 2147 Tue Aug 27 11:08:14 CEST 2013 META-INF/MANIFEST.MF
X.509, CN=<votre_nom_et_prénom>, OU=<votre_organisation>, O=<votre_entreprise>, L=<votre_ville>, ST=<votre_pays>, C=<votre_code_pays> (<votre_alias>)
[certificate is valid from 27/08/13 10:43 to 04/09/23 10:43]
…