Table des matières

Procedure de signature de .jar :

Le document pdf

Demande d’une clé de signature

La demande s’effectue auprès de Renater et c’est l’établissement hébergeur qui en fera la demande. Quand il la recevra, elle vous sera transmise. Lors de la demande, il faut fournir une personne référente dont les coordonnées seront dans la clé. Cela n’a pas d’incidence sur la procédure ensuite.

A réception de la clé :

La clé est livrée en fichier .tar qui comprend 3 fichiers :


Génération de la clé de signature :

Les opérations suivantes ne sont à faire qu’une seule fois, à la réception de la clé, avant utilisation.
Les fichiers générés sont valables 3 ans.

Vérifier si l'accès aux commandes de java est correct :

Vérifier l’accès aux commandes : keytool, jarsigner qui sont dans les binaires de java. Modifier éventuellement la variable PATH.

Vérifier si la clé est bonne :

 (openssl x509 -noout -modulus -in  cert-<xxx>.pem | openssl md5 ;openssl rsa -noout -modulus -in code-signing-<xxx>.key | openssl md5) 
 
⇒ affiche les 2 cles. Verifier si elles sont identiques ⇒ ok.

Ou

 (openssl x509 -noout -modulus -in <fichier cert-xxx>.pem | openssl md5 ;openssl rsa -noout -modulus -in code-signing-<xxx>.key | openssl md5)| uniq
 

⇒ affiche une seule cle si ok ,sinon affiche les 2 (si differentes)

Procédure pour générer la clé :

A faire dans le répertoire où sont les fichiers clés :

 $> openssl pkcs12 -export -in cert-<xxx>.pem -out cert-<xxx>.p12 -name "Certificat" -inkey code-signing-<xxx>.key -certfile chain-<xxx>.pem 

Cela va générer un fichier .p12 à l’aide des fichiers .chain et .key
Un mot de passe est demandé au moment de cette génération.
A noter puisqu'il sera demandé plus tard et au moment de la signature.
C'est ici aussi qu'est défini le nom de la clé qui sera utilisée plus tard pour la signature : “Certificat”

Le Keystore (<fichier>.jks):

Générer un keystore :

Le fichier.jks ne sera pas employé tel quel – cette procédure permet juste de générer un contenant.

 $> keytool -genkey -alias Test -keystore <fichier>.jks

Il est demandé de donner un mot de passe pour le keystore. ( A noter aussi pour la suiute ) D'autres informations mais elles ne sont pas essentielles puisque le fichier généré ne sera pas employé en tant que tel.
Taper <Enter> jusqu'à la demande de confirmation :

 Est-ce CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown ? [non]:  
 

et taper <oui> (ou <Yes> suivant ce qui est demandé) pour confirmer.

A chaque opération suivante concernant le fichier keystore (.jks), son pwd sera demandé.

 $> keytool -delete -alias Test -keystore  <fichier>.jks

Pwd keystore avant que la commande s'exécute.

 $> keytool -list -v -keystore  <fichier>.jks

Pwd keystore avant que la commande s'exécute.

Remplir le keystore avec les bonnes informations :

A ce moment-là, re-remplir le fichier keystore avec les informations officielles reçues ainsi que la clé.

 $>keytool -v -importkeystore -srckeystore cert-<xxx>.p12 -srcstoretype PKCS12 -destkeystore  <fichier>.jks -deststoretype JKS

Le pwd du keystore est demandé, puis celui de la clé (celui défini plus haut) et ensuite, génération du fichier .jks.

 $> keytool -list -v -keystore  <fichier>.jks

Pwd keystore.

RAPPEL: Ceci sont les étapes préliminaires avant la procédure de signature. A ne faire qu'une seule fois à la reception des infos de signature.
La cle a une durée de vie de 3 ans.

NE PAS OUBLIER LES PWDs, keystore et clé. Sinon, regénérer.

Signature du code

 > jarsigner -keystore  <fichier>.jks  <fichier>.jar Certificat

Demande le mot de passe du keystore, puis celui de la clé.
⇒ Génération du jar signé.

Pour qu’une application soit identifiée comme sécurisée, il faut signer tous les .jar utilisés, même ceux des librairies utilisées.