«

»

Certificat pour signature d’une Applet Java

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.

Notice

A noter que ces outils sont communs à Linux et Windows et que donc leur utilisation est rigoureusement identique à l’exception de l’emplacement du ou des fichiers générés.

En particulier le certificat sera généré par défaut sous C:\Users\<votre_compte> (Windows 7) et sous $HOME (Linux).

 

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>

Important!

Les données à saisir sont typographiées dans cette police de caractères.

Le certificat généré est le fichier.keystore disponible sous C:\Users\<votre_compte> (Windows 7) et sous $HOME (Linux).

 
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]