ADT использует криптографическую архитектуру Java (JCA) для доступа к закрытым ключам и сертификатам подписи приложений AIR. Параметры подписи позволяют определить хранилище ключей, а также закрытый ключ и сертификат внутри него.
В хранилище ключей должны быть закрытый ключ и связанная с ним цепочка сертификатов. Если сертификат подписи ведет к надежному сертификату на компьютере, содержимое поля общего имени сертификата выводится в качестве имени издателя в диалоговом окне установки AIR.
ADT требует, чтобы сертификат отвечал стандарту x509v3 (
RFC3280
) и включал расширение Extended Key Usage с соответствующими значениями для подписания кода. Ограничения, определенные в сертификате, соблюдаются, поэтому некоторые сертификаты могут не подойти для подписи приложений AIR.
Синтаксис параметров подписи AIR
Для параметров подписи используется следующий синтаксис (в одной командной строке):
-alias aliasName
-storetype type
-keystore path
-storepass password1
-keypass password2
-providerName className
-tsa url
-alias
— псевдоним ключа в хранилище. Псевдоним необязателен, если в хранилище всего один сертификат. Если псевдоним не задан, ADT просто использует первый ключ.
Не все программы управления хранилищами ключей позволяют давать сертификатам псевдонимы. Например, в системном хранилище ключей Windows в качестве псевдонима нужно использовать отличительное имя сертификата. Для вывода списка доступных сертификатов можно использовать утилиту Java Keytool, чтобы легче было определить псевдоним. Например, выполнение команды:
keytool -list -storetype Windows-MY
выводит следующую информацию о сертификатах:
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
Для ссылки на этот сертификат из командной строки ADT задайте следующий псевдоним:
CN=TestingCert,OU=QE,O=Adobe,C=US
В Mac OS X псевдонимом сертификата в цепочке ключей (Keychain) является имя, отображаемое в приложении Keychain Access.
-storetype
— тип хранилища, заданный его реализацией. Реализация хранилища по умолчанию, включаемая в среды Java, поддерживает типы
JKS
и
PKCS12
types. Java 5.0 поддерживает и тип
PKCS11
для доступа к аппаратным маркерам, и тип
Keychain
для доступа к цепочке ключей Mac OS X. Java 6.0 поддерживает тип
MSCAPI
(в Windows). Если установлены и настроены другие поставщики JCA, могут быть доступны и другие типы хранилищ ключей. Если тип хранилища ключей не задан, то по умолчанию используется тип поставщика JCA.
Тип хранилища
|
Формат хранилища
|
Минимальная версия Java
|
JKS
|
Файл Java keystore (.keystore)
|
1.2
|
PKCS12
|
Файл PKCS12 (.p12 или .pfx)
|
1.4
|
PKCS11
|
Аппаратный маркер
|
1.5
|
KeychainStore
|
Цепочка ключей Mac OS X
|
1.5
|
Windows-MY или Windows-ROOT
|
MSCAPI
|
1.6
|
-keystore
— путь к файлу-хранилищу ключей, если хранилище является файлом.
-storepass
— пароль для доступа к хранилищу ключей. Если не задан, ADT запросит пароль.
-keypass
— пароль для доступа к закрытому ключу, которым подписано приложение AIR. Если не задан, ADT запросит пароль.
Примечание.
Если в числе параметров команды ADT указан пароль, он сохраняется в истории командной строки. Поэтому не рекомендуется использовать параметры -keypass и -storepass, если крайне важно обеспечить безопасность сертификата. Также следует заметить, что если пароль не указан, во время ввода пароля по запросу символы не отображаются (в целях безопасности). Просто введите пароль и нажмите клавишу Enter.
-providerName
— поставщик JCA для определенного типа хранилища ключей. Если не задан, ADT использует поставщика по умолчанию для этого типа хранилища.
-tsa
— задает URL-адрес сервера меток времени, соответствующего стандарту
RFC3161
для добавления метки времени к цифровой подписи. Если URL не задан, используется временная отметка Geotrust по умолчанию. Когда подписанное приложение AIR снабжено временной отметкой, приложение можно будет установить и после истечения срока действия сертификата, потому что отметка подтверждает, что на момент подписания сертификат был действителен.
Если ADT не может подключиться к серверу выдачи временных отметок, подпись не выполняется и пакет не формируется. Для отмены временных отметок укажите
-
tsa none
. Однако приложение AIR, упакованное без временной отметки, нельзя будет установить после истечения срока действия сертификата.
Примечание.
Большинство параметров подписи соответствуют параметрам утилиты Java Keytool. Утилиту Keytool можно использовать для изучения и управления хранилищами ключей в Windows. В Mac OS X для этой цели используется утилита безопасности Apple®.
-provisioning-profile
Файл поставки Apple iOS (требуется только для упаковки приложений iOS).
Примеры параметров подписи
Подпись с помощью файла .p12:
-storetype pkcs12 -keystore cert.p12
Подпись с помощью файла Java keystore по умолчанию:
-alias AIRcert -storetype jks
Подпись с помощью заданного файла Java keystore:
-alias AIRcert -storetype jks -keystore certStore.keystore
Подпись с помощью файла цепочки ключей Mac OS X:
-alias AIRcert -storetype KeychainStore -providerName Apple
Подпись с помощью файла системного хранилища ключей Windows:
-alias cn=AIRCert -storeype Windows-MY
Подпись с помощью аппаратного маркера (см. инструкции производителя маркера, чтобы настроить конфигурацию Java для использования маркера и получения верного значения
providerName
):
-alias AIRCert -storetype pkcs11 -providerName tokenProviderName
Подпись без включения временной отметки:
-storetype pkcs12 -keystore cert.p12 -tsa none