Technologies internet


Utilité et utilisation des certificats


Voir:

Le processus de certification permet d'étendre les permissions accordées à des applets ou à des applications. Les applets étant des mini-programmes téléchargeables sur le net, donc provenant de sources parfois inconnues et douteuses, les concepteurs de JAVA ont dès le début restreint de manière très stricte les possiblités des applets vis-à-vis de la machine cliente. Ainsi, elles ne peuvent, en aucune manière, lire le contenu des disques de la machine, encore moins y écrire, ni envoyer des requêtes à d'autres machines excepté dans certains cas à la machine d'où vient l'applet.

Cela étant, "pour ne pas se limiter à jouer dans un bac à sable", ces mêmes concepteurs ont introduit la notion de certication d'applet. Celle-ci permet, d'une part, comme n'importe quel certificat, d'attester de la provenance du fichier reçu, d'autre part, de modifier les autorisations et les interdictions d'applets provenant de tel ou tel endroit en modifiant la "politique de java" (java policy).

Afin de rendre cela un peu plus concret, prenons l'exemple d'une applet et supposons l'existence de deux personnes. La première (appelée inf4533) est le distributeur de l'applet et la deuxième (appelée user) est l'utilisateur de cette applet signée par inf4533.

Pour s'assurer que l'applet vient bien de inf4533, user (en fait son navigateur) utilise le certificat précédemment distribué par inf4533. En effet, le navigateur peut, à partir du certificat et de l'applet (signée), acter que cette dernière a été signée par le créateur du certificat. Cette vérification faite, il peut, et seulement dans ce cas, modifier, selon un "fichier de règles" (java policy), les autorisations de l'applet. Il est important de noter que la modification des autorisations peut être différente suivant les différents signataires des applets.

Etapes à faire par le concepteur d'une applet:

Nous supposons que le concepteur a déjà compilé toutes les classes utilisées par son applet et que celles-ci sont dans le répertoire courant.

1. Création d'une paire de clé privée/publique dans le magasin inf4533.store .

keytool -genkey -keystore inf4533.store -alias inf4533
# $HOME/.keystore par défaut
# inf4533 est un alias pour la paire des clés

A l'écran:

Tapez le mot de passe du Keystore : ******
Quels sont vos prénom et nom?
[Unknown]: inf4533
Quel est le nom de votre unité organisationnelle ?
[Unknown]: Département d'informatique et d'ingénierie
Quel est le nom de votre organisation ?
[Unknown]: UQO
Quel est le nom de votre ville de résidence?
[Unknown]: Gatineau
Quel est le nom de votre état ou province ?
[Unknown]: Québec
Quel est le code de pays à deux lettres pour cette unité ?
[Unknown]: ca
Est-ce CN=inf4533, OU=Département d'informatique et d'ingénierie, O=UQO, L=Gatineau, ST=Québec, C=ca ?
[non]: oui

Spécifiez le mot de passe de la clé pour <inf4533>
        (appuyez sur Entrée s'il s'agit du mot de passe du Keystore): ******

2. Vérification éventuelle des clés stockées:

keytool -list -keystore inf4533.store

3. Création du certificat publique associé qui permettra de déterminer univoquément qu'un tel fichier a été signé par le possesseur de la clé privée associée à la clé publique:

keytool -export -keystore inf4533.store -alias inf4533 -file inf4533.cert

A l'écran :

Tapez le mot de passe du Keystore : ******
Certificat enregistré dans le fichier <inf4533.cert>

On obtient alors le fichier inf4533.cert qui est le certificat publique contenant la clé publique à donner à ceux qui veulent utiliser les applets signées par inf4533.

4. Création d'un fichier jar à partir des fichiers .class .

jar cvf filename.jar *.class

5. Signature du fichier jar avec la clé privée de inf4533 stockée dans inf4533.store.

jarsigner -keystore inf4533.store filename.jar inf4533


Pour d'autres applets, inf4533 ne doit répéter que les étapes 4 et 5.



Etape à faire par l'utilisateur de l'applet:

1. Après réception du certificat de inf4533 (fichier inf4533.cert), visualisation possible de ses caractéristiques avec

keytool -printcert -file inf4533.cert

A l'écran :

Propriétaire : CN=inf4533, OU=Département d'informatique et d'ingénierie, O=UQO, L=Gatineau, ST=Québec, C=ca
Émetteur : CN=inf4533, OU=Département d'informatique et d'ingénierie, O=UQO, L=G atineau, ST=Québec, C=ca
Numéro de série : 3e939179
Valide du : Sun Dec 12 13:56:16 EST 2004 au: Sat Mar 12 13:56:16 EST 2005
Empreintes de certificat :
MD5 : 8D:2C:96:E6:C4:91:04:62:90:FE:DE:DD:A2:2D:CF:CC
SHA1: FE:C3:8E:2A:F3:19:8D:38:FF:37:BC:81:1B:C7:10:7B:92:80:59:0D

2. Importation et acceptation du certificat:

keytool -import -keystore user.store -alias inf4533 -file inf4533.cert

A l'écran :


Tapez le mot de passe du Keystore : ******
Propriétaire : CN=inf4533, OU=Département d'informatique et d'ingénierie, O=UQO, L=Gatineau, ST=Québec, C=ca
Émetteur : CN=inf4533, OU=Département d'informatique et d'ingénierie, O=UQO, L=G atineau, ST=Québec, C=ca
Numéro de série : 3e939179
Valide du : Tue Apr 08 23:20:25 EDT 2003 au : Mon Jul 07 23:20:25 EDT 2003
Empreintes de certificat :
MD5 : 8D:2C:96:E6:C4:91:04:62:90:FE:DE:DD:A2:2D:CF:CC
SHA1: FE:C3:8E:2A:F3:19:8D:38:FF:37:BC:81:1B:C7:10:7B:92:80:59:0D
Faire confiance à ce certificat ? [non] : oui
Certificat ajouté au Keystore

3. Vérification de l'importation:

keytool -list -keystore user.store

A l'écran :


Tapez le mot de passe du Keystore : ******

Type Keystore : jks
Fournisseur Keystore : SUN

Votre Keystore contient 1 entrée(s)

inf4533, 2003-04-09, trustedCertEntry,
Empreinte du certificat (MD5) : 8D:2C:96:E6:C4:91:04:62:90:FE:DE:DD:A2:2D:CF:CC

4. Création d'un fichier de politique de sécurité JAVA:

Pour cela, il faut créer un fichier du nom de .java.policy dans votre répertoire home (c.-à-d. l'endroit où vous lancez le navigateur), dont le contenu se rapproche de:

keystore "file:user.store", "JKS";

grant signedBy "inf4533"
{ permission java.security.AllPermission;
};

Attention, ceci est un exemple et donne à l'applet toutes les autorisations (cf. permission java.security.AllPermission) ! A utiliser avec une extrême prudence pour les applets étrangères.

Remarque:

Depuis la version JDK 1.3, une applet signée et certifiée peut avoir tous les droits si l'utilisateur déclare avoir confiance dans cette applet signée (le navigateur lui pose la question).

Cette fonctionnalité a été ajoutée pour faciliter l'exécution des applets sans installation de fichiers de police de sécurité spéciaux chez les clients Web.