ADT gebruikt JCA (Java Cryptography Architecture) om toegang te krijgen tot persoonlijke sleutels en certificaten voor het ondertekenen van AIR-toepassingen. Met de ondertekeningsopties worden het sleutelarchief en de persoonlijke sleutel en het certificaat in dat sleutelarchief opgegeven.
Het sleutelarchief moet zowel de persoonlijke sleutel als de bijbehorende certificaatketen bevatten. Als het handtekeningcertificaat via een certificaatketen is gekoppeld aan een vertrouwd certificaat op een computer, wordt de inhoud van het veld algemene naam van het certificaat als de uitgeversnaam weergegeven in het dialoogvenster van de AIR-installatie.
Voor ADT moet het certificaat aan de x509v3-standaard voldoen (
RFC3280
) en de EKU-uitbreiding (Extended Key Usage) met de juiste waarden voor de ondertekening van code bevatten. Beperkingen in het certificaat worden gerespecteerd, waardoor bepaalde certificaten niet kunnen worden gebruikt voor het ondertekenen van AIR-toepassingen.
Syntaxis van AIR-ondertekeningsopties
De ondertekeningsopties maken gebruik van de volgende syntaxis (op één opdrachtregel):
-alias aliasName
-storetype type
-keystore path
-storepass password1
-keypass password2
-providerName className
-tsa url
-alias
De alias van een sleutel in het sleutelarchief. U hoeft geen alias op te geven wanneer een sleutelarchief slechts één certificaat bevat. Als er geen alias is opgegeven, wordt de eerste sleutel in het sleutelarchief gebruikt.
Niet in alle toepassingen voor sleutelarchiefbeheer mag een alias worden toegewezen aan certificaten. Als u het sleutelarchief van Windows gebruikt, wordt bijvoorbeeld de DN-naam van het certificaat als alias gebruikt. Met het Java-hulpprogramma Keytool kunt u de beschikbare certificaten weergeven zodat u de alias kunt bepalen. Als u bijvoorbeeld deze opdracht uitvoert:
keytool -list -storetype Windows-MY
wordt soortgelijke uitvoer als hieronder weergegeven voor een certificaat:
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
Als u in de ADT-opdracht op de opdrachtregel naar dit certificaat wilt verwijzen, stelt u de alias in op:
CN=TestingCert,OU=QE,O=Adobe,C=US
In Mac OS X is de alias van een certificaat in de Keychain de naam die wordt weergegeven in de toepassing Keychain Access.
-storetype
Het type sleutelarchief. Dit wordt bepaald door de implementatie van het sleutelarchief. De standaard sleutelarchiefimplementatie die in de meeste installaties van Java is opgenomen, ondersteunt de typen
JKS
en
PKCS12
. Java 5.0 biedt ondersteuning voor het type
PKCS11
, voor toegang tot sleutelarchieven op hardwaretokens, en het type
Keychain
, voor toegang tot de KeyChain van Mac OS X. Java 6.0 biedt ondersteuning voor het type
MSCAPI
(in Windows). Als er andere JCA-providers zijn geïnstalleerd en geconfigureerd, kunnen er meer sleutelarchieftypen beschikbaar zijn. Als er geen sleutelarchieftype is opgegeven, wordt het standaardtype voor de standaard JCA-provider gebruikt.
Archieftype
|
Indeling van sleutelarchief
|
Minimale Java-versie
|
JKS
|
Java-sleutelarchiefbestand (.keystore)
|
1.2
|
PKCS12
|
PKCS12-bestand (.p12 of .pfx)
|
1.4
|
PKCS11
|
Hardwaretoken
|
1.5
|
KeyChain-archief
|
KeyChain van Mac OS X
|
1.5
|
Windows-MY of Windows-ROOT
|
MSCAPI
|
1.6
|
-keystore
Het pad naar het sleutelarchiefbestand voor archieftypen die op bestanden zijn gebaseerd.
-storepass
Het wachtwoord voor toegang tot het sleutelarchief. Als u dit niet opgeeft, vraagt ADT om het wachtwoord.
-keypass
Het wachtwoord voor toegang tot de persoonlijke sleutel waarmee de AIR-toepassing wordt ondertekend. Als u dit niet opgeeft, vraagt ADT om het wachtwoord.
Opmerking:
als u een wachtwoord opgeeft als onderdeel van de ADT-opdracht, worden de wachtwoordtekens opgeslagen in de geschiedenis van de opdrachtregel. Om die reden wordt het gebruik van de opties -keypass of -storepass niet aanbevolen wanneer de beveiliging van het certificaat belangrijk is. Wanneer u de wachtwoordopties weglaat, worden de tekens die u typt niet weergegeven (om dezelfde beveiligingsredenen). U kunt eenvoudig het wachtwoord typen en op Enter drukken.
-providerName
De JCA-provider voor het opgegeven sleutelarchieftype. Als u geen provider opgeeft, wordt de standaardprovider voor dat type sleutelarchief gebruikt.
-tsa
De URL van een
RFC3161
-compatibele tijdstempelserver om een tijdstempel voor de digitale handtekening te verkrijgen. Als u geen URL opgeeft, wordt een standaard tijdstempelserver van Geotrust gebruikt. Wanneer de handtekening van een AIR-toepassing een tijdstempel heeft, kan de toepassing nog steeds worden geïnstalleerd nadat het handtekeningcertificaat is verlopen, omdat het tijdstempel aangeeft dat het certificaat geldig was op het moment van ondertekening.
Als ADT geen verbinding kan maken met de tijdstempelserver, wordt het ondertekenen geannuleerd en wordt geen pakket gemaakt. Geef
-
tsa none
op om het ophalen van een tijdstempel uit te schakelen. Een AIR-toepassing in een pakket zonder tijdstempel kan echter niet worden geïnstalleerd nadat het handtekeningcertificaat is verlopen.
Opmerking:
veel ondertekeningsopties zijn gelijk aan dezelfde optie in het Java-hulpprogramma Keytool. Met het hulpprogramma Keytool kunt u sleutelarchieven in Windows controleren en beheren. In Mac OS X kunt u hiervoor het beveiligingsprogramma van Apple® gebruiken.
-provisioning-profile
Het Apple iOS-inrichtingsbestand. (Alleen vereist voor het verpakken van iOS-toepassingen.)
Voorbeelden van ondertekeningsopties
Ondertekenen met een .p12-bestand:
-storetype pkcs12 -keystore cert.p12
Ondertekenen met het standaard sleutelarchief van Java:
-alias AIRcert -storetype jks
Ondertekenen met een specifiek sleutelarchief van Java:
-alias AIRcert -storetype jks -keystore certStore.keystore
Ondertekenen met de KeyChain van Mac OS X:
-alias AIRcert -storetype KeychainStore -providerName Apple
Ondertekenen met het sleutelarchief van Windows:
-alias cn=AIRCert -storeype Windows-MY
Ondertekenen met een hardwaretoken (raadpleeg de instructies van de fabrikant van het token om Java te configureren voor het gebruik van het token en voor de juiste waarde van
providerName
):
-alias AIRCert -storetype pkcs11 -providerName tokenProviderName
Ondertekenen zonder een tijdstempel:
-storetype pkcs12 -keystore cert.p12 -tsa none