ADT verwendet die Java Cryptography Architecture (JCA), um auf private Schlüssel und Zertifikate für die Unterzeichnung von AIR-Anwendungen zuzugreifen. Mit den Unterzeichnungsoptionen werden der Keystore und die privaten Schlüssel und Zertifikate im Keystore angegeben.
Der Keystore muss sowohl den privaten Schlüssel als auch die damit verknüpfte Zertifikatkette enthalten. Wenn das Signaturzertifikat über eine Kette mit einem vertrauenswürdigen Zertifikat auf einem Computer verbunden ist, wird der Inhalt des allgemeinen Namensfeldes des Zertifikats als Name des Herausgebers im Dialogfeld der AIR-Installation angezeigt.
ADT setzt voraus, dass das Zertifikat dem Standard „x509v3“ (
RFC3280
) entspricht und die Extended Key Usage-Erweiterung mit den korrekten Werten für die Codesignatur enthält. Innerhalb der Zertifikate definierte Einschränkungen werden respektiert und können dazu führen, dass einige Zertifikate nicht für das Signieren von AIR-Anwendungen verwendet werden können.
Syntax der AIR-Signaturoptionen
Für die Signaturoptionen wird die folgende Syntax verwendet (in einer einzelnen Befehlszeile):
-alias aliasName
-storetype type
-keystore path
-storepass password1
-keypass password2
-providerName className
-tsa url
-alias
Der Aliasname eines Schlüssels im Keystore. Die Angabe eines Aliasnamens ist nicht erforderlich, wenn der Keystore nur ein Zertifikat enthält. Wurde kein Aliasname angegeben, verwendet ADT den ersten Schlüssel im Keystore.
Nicht alle Keystore-Managementanwendungen gestatten die Zuweisung von Aliasnamen zu Zertifikaten. Verwenden Sie zum Beispiel einen Keystore des Windows-Systems, können Sie den eindeutigen Namen des Zertifikats als Aliasnamen verwenden. Mithilfe des Dienstprogramms Java Keytool können Sie die verfügbaren Zertifikate auflisten, um den Aliasnamen festzulegen. So wird zum Beispiele mit der Ausführung des Befehls:
keytool -list -storetype Windows-MY
eine Ausgabe wie die folgende für ein Zertifikat erzeugt:
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
Um auf dieses Zertifikat in der ADT-Befehlszeile zu verweisen, setzen Sie den Aliasnamen auf:
CN=TestingCert,OU=QE,O=Adobe,C=US
Unter Mac OS X ist der Aliasname eines Zertifikats in der Schlüsselkette der Name, der in der Schlüsselbund-Anwendung angezeigt wird.
-storetype
Der Typ des Keystores, der durch die Keystore-Implementierung festgelegt wird. Die Keystore-Standardimplementierung der meisten Java-Installationen unterstützt die Typen
JKS
und
PKCS12
. Java 5.0 beinhaltet Unterstützung für den Typ
PKCS11
für den Zugriff auf Keystores auf Hardware-Token und für den Typ
Keychain
für den Zugriff auf den Schlüsselbund von Mac OS X. Java 6.0 beinhaltet Unterstützung für den Typ
MSCAPI
(unter Windows). Wurden andere JCA-Anbieter installiert und konfiguriert, stehen u. U. noch weitere Keystore-Typen zur Verfügung. Wurde kein Keystore-Typ angegeben, wird der Standardtyp für den JCA-Standardanbieter verwendet.
Keystore-Typ
|
Keystore-Format
|
Java-Mindestversion
|
JKS
|
Java-Keystore-Datei (.keystore)
|
1.2
|
PKCS12
|
PKCS12-Datei (.p12 oder .pfx)
|
1.4
|
PKCS11
|
Hardware-Token
|
1.5
|
KeychainStore
|
Mac OS X-Schlüsselbund
|
1.5
|
Windows-MY oder Windows-ROOT
|
MSCAPI
|
1.6
|
-keystore
Der Pfad zur Keystore-Datei für dateibasierte Keystore-Typen.
-storepass
Das für den Zugriff auf den Keystore erforderliche Kennwort. Wurde kein Kennwort angegeben, blendet ADT eine Aufforderung zur Kennworteingabe ein.
-keypass
Das Kennwort, das für den privaten Schlüssel erforderlich ist, mit dem die AIR-Anwendung signiert wird. Wurde kein Kennwort angegeben, blendet ADT eine Aufforderung zur Kennworteingabe ein.
Hinweis:
Wenn Sie ein Kennwort als Teil des ADT-Befehls eingeben, werden die Zeichen des Kennworts im Befehlszeilenverlauf gespeichert. Deshalb wird die Verwendung der -keypass- oder -storepass-Optionen nicht empfohlen, wenn die Sicherheit des Zertifikats wichtig ist. Beachten Sie außerdem, dass bei Auslassung der Kennwortoptionen die Zeichen, die Sie bei der Kennwortaufforderung eingeben, aus denselben Sicherheitsgründen nicht angezeigt werden. Geben Sie einfach das Kennwort ein und drücken Sie die Eingabetaste.
-providerName
Der JCA-Anbieter für den angegebenen Keystore-Typ. Wurde kein Anbieter angegeben, verwendet ADT den Standardanbieter für diesen Keystore-Typ.
-tsa
Gibt die URL für einen
RFC3161
-konformen Zeitstempelserver an, der die digitale Unterschrift mit einem Zeitstempel versieht. Wurde keine URL angegeben, wird der von Geotrust angebotene Standard-Zeitstempelserver verwendet. Wenn die Signatur einer AIR-Anwendung mit einem Zeitstempel versehen wurde, kann die Anwendung auch nach Ablauf des Zertifikats installiert werden, da der Zeitstempel das Zertifikat als gültig zum Zeitpunkt der Unterzeichnung verifiziert.
Kann ADT keine Verbindung zum Zeitstempelserver herstellen, wird die Unterzeichnung abgebrochen und es wird kein Paket erstellt. Geben Sie
-
tsa none
an, um die Vergabe eines Zeitstempels zu deaktivieren. AIR-Anwendungen, die ohne Zeitstempel komprimiert wurden, können jedoch nicht mehr installiert werden, wenn das signierende Zertifikat abgelaufen ist.
Hinweis:
Viele Signaturoptionen entsprechend den jeweiligen Optionen des Java-Keytool-Dienstprogramms. Anhand des Dienstprogramms Keytool können Sie Keystores unter Windows überprüfen und verwalten. Das Sicherheitsdienstprogramm von Apple® kann unter Mac OS X für dieselben Zwecke eingesetzt werden.
-provisioning-profile
Die Apple iOS-Provisioning-Datei. (Nur für das Komprimieren von iOS-Anwendungen erforderlich.)
Beispiele für Unterzeichnungsoptionen
Signieren mit einer .p12-Datei:
-storetype pkcs12 -keystore cert.p12
Signieren mit dem Standard-Keystore von Java:
-alias AIRcert -storetype jks
Signieren mit einem bestimmten Keystore von Java:
-alias AIRcert -storetype jks -keystore certStore.keystore
Signieren mit einem Mac OS X-Schlüsselbund:
-alias AIRcert -storetype KeychainStore -providerName Apple
Signieren mit einem System-Keystore unter Windows:
-alias cn=AIRCert -storeype Windows-MY
Signieren mit einem Hardware-Token (informieren Sie sich in den Anweisungen des Token-Herstellers zur Konfiguration von Java über die Verwendung des Tokens und den korrekten Wert für
providerName
):
-alias AIRCert -storetype pkcs11 -providerName tokenProviderName
Signieren ohne Einbettung eines Zeitstempels:
-storetype pkcs12 -keystore cert.p12 -tsa none