Options de signature du code de l’outil ADT

ADT utilise l’architecture JCA (Java Cryptography Architecture) pour accéder aux clés privées et aux certificats pour les applications AIR de signature. Les options de signature permettent d’identifier le keystore ainsi que la clé privée et le certificat qu’il contient.

Le keystore doit comprendre à la fois la clé privée et la chaîne de certificat associée. Si le certificat de signature est lié à un certificat approuvé qui réside sur l’ordinateur, c’est le contenu du champ de nom commun du certificat qui s’affiche en tant que nom d’éditeur dans la boîte de dialogue d’installation d’AIR.

L’outil ADT exige que le certificat soit conforme à la norme x509v3 (RFC3280) et qu’il comprenne l’extension d’utilisation avancée de la clé dotée des valeurs appropriées à la signature du code. Les contraintes inhérentes au certificat sont respectées et pourraient empêcher l’utilisation de certains certificats pour signer une application AIR.

Remarque : le cas échéant, l’outil ADT fait appel aux paramètres proxy de l’environnement d’exécution Java (JRE, Java Runtime Environment) pour se connecter à des ressources Internet afin de vérifier les listes de révocation de certificats et d’obtenir des horodatages. Si vous rencontrez des problèmes lors de la connexion à ces ressources Internet avec l’outil ADT alors que le réseau requiert des paramètres proxy spécifiques, vous devrez peut-être configurer les paramètres proxy de JRE.

Syntaxe des options de signature AIR

Les options de signature font appel à la syntaxe suivante (sur une seule ligne de commande) :

-alias aliasName 
-storetype type 
-keystore path 
-storepass password1 
-keypass password2 
-providerName className 
-tsa url

-alias Alias d’une clé dans le keystore. Il est inutile de spécifier un alias lorsqu’un keystore contient uniquement un certificat. Si aucun alias n’est précisé, l’outil ADT utilise la première clé du keystore.

Toutes les applications de gestion de keystores ne permettent pas d’affecter un alias à des certificats. Avec le keystore du système Windows par exemple, vous devez utiliser le nom unique du certificat comme alias. L’utilitaire Java Keytool vous permet de dresser la liste des certificats disponibles afin de déterminer les alias pertinents. Par exemple, si vous exécutez la commande :

keytool -list -storetype Windows-MY

la sortie suivante sera générée pour un certificat :

CN=TestingCert,OU=QE,O=Adobe,C=US, PrivateKeyEntry, 
Certificate fingerprint (MD5): 73:D5:21:E9:8A:28:0A:AB:FD:1D:11:EA:BB:A7:55:88

Pour faire référence à ce certificat sur la ligne de commande d’ADT, définissez l’alias sur :

CN=TestingCert,OU=QE,O=Adobe,C=US

Sous Mac OS X, l’alias d’un certificat dans la chaîne de clé correspond au nom affiché dans l’application Trousseau d’accès.

-storetype Type de keystore déterminé par l’implémentation du keystore. L’implémentation par défaut du keystore comprise dans la plupart des installations Java prend en charge les types JKS et PKCS12. Java 5.0 assure la prise en charge du type PKCS11 (permettant d’accéder aux keystores situés sur des jetons matériels) et du type Keychain (permettant d’accéder à la chaîne de clé Mac OS X). Java 6.0 prend en charge le type MSCAPI (sous Windows). Si d’autres fournisseurs JCA ont été installés et configurés, il se peut que d’autres types de keystores soient disponibles. Si aucun type de keystore n’est spécifié, c’est le type par défaut correspondant au fournisseur JCA défini par défaut qui sera utilisé.

Type de magasin

Format du keystore

Version Java minimale

JKS

Fichier keystore Java (.keystore)

1.2

PKCS12

Fichier PKCS12 (.p12 ou .pfx)

1.4

PKCS11

Jeton matériel

1.5

KeychainStore

Chaîne de clé Mac OS X

1.5

Windows-MY ou Windows-ROOT

MSCAPI

1.6

-keystore Chemin d’accès au fichier keystore pour les types de magasins basés sur un fichier.

-storepass Mot de passe requis pour accéder au keystore. Si vous n’avez pas spécifié de mot de passe, l’outil ADT vous invite à en entrer un.

-keypass Mot de passe requis pour accéder à la clé privée permettant de signer l’application AIR. Si vous n’avez pas spécifié de mot de passe, l’outil ADT vous invite à en entrer un.

Remarque : si vous entrez un mot de passe dans le cadre de la commande ADT, les caractères sont enregistrés dans l’historique de ligne de commande. Il est par conséquent recommandé d’éviter l’utilisation des options -keypass ou -storepass si la sécurité du certificat est importante. Notez également que si vous omettez les options de mot de passe, les caractères saisis dans les invites de saisie de mot de passe ne s’affichent pas (pour les mêmes raisons de sécurité). Saisissez simplement le mot de passe et appuyez sur la touche Entrée.

-providerName Fournisseur JCA conçu pour le type de keystore spécifié. Si vous ne spécifiez pas de fournisseur, l’outil ADT utilise le fournisseur associé par défaut au type de keystore.

-tsa Indique l’URL d’un serveur d’horodatage compatible RFC3161 à des fins d’horodatage de la signature numérique. Si vous n’avez pas spécifié d’URL, un serveur d’horodatage par défaut fourni par Geotrust est utilisé. Dès lors que la signature d’une application AIR est horodatée, il est encore possible d’installer l’application après l’expiration du certificat de signature, car l’horodatage vérifie la validité du certificat au moment de l’apposition de la signature.

Si l’outil ADT ne parvient pas à se connecter au serveur d’horodatage, la signature est annulée et le package n’est pas créé. Pour désactiver l’horodatage, spécifiez -tsa none. Toutefois, il devient impossible d’installer une application AIR mise en package sans horodatage une fois le certificat de signature arrivé à expiration.

Remarque : la plupart des options de signature correspondent à l’option équivalente de l’utilitaire Java Keytool. Vous pouvez utiliser ce dernier afin d’examiner et de gérer des keystores sous Windows. L’utilitaire de sécurité Apple® s’acquitte également de ces tâches sous Mac OS X.

-provisioning-profile Fichier de configuration Apple iOS (requis par la mise en package d’applications iOS uniquement).

Exemples d’options de signature

Signature à l’aide d’un fichier .p12 :

-storetype pkcs12 -keystore cert.p12

Signature à l’aide du keystore Java par défaut :

-alias AIRcert -storetype jks

Signature à l’aide d’un keystore Java spécifique :

-alias AIRcert -storetype jks -keystore certStore.keystore

Signature à l’aide de la chaîne de clé Mac OS X :

-alias AIRcert -storetype KeychainStore -providerName Apple

Signature à l’aide du keystore du système Windows :

-alias cn=AIRCert -storeype Windows-MY

Signature à l’aide d’un jeton matériel (voir les instructions du fabricant du jeton concernant la configuration de Java en vue d’utiliser le jeton et de définir la valeur providerName pertinente) :

-alias AIRCert -storetype pkcs11 -providerName tokenProviderName

Signature sans horodatage incorporé :

-storetype pkcs12 -keystore cert.p12 -tsa none