Параметры подписания кода ADT

ADT использует криптографическую архитектуру Java (JCA) для доступа к закрытым ключам и сертификатам подписи приложений AIR. Параметры подписи позволяют определить хранилище ключей, а также закрытый ключ и сертификат внутри него.

В хранилище ключей должны быть закрытый ключ и связанная с ним цепочка сертификатов. Если сертификат подписи ведет к надежному сертификату на компьютере, содержимое поля общего имени сертификата выводится в качестве имени издателя в диалоговом окне установки AIR.

ADT требует, чтобы сертификат отвечал стандарту x509v3 ( RFC3280 ) и включал расширение Extended Key Usage с соответствующими значениями для подписания кода. Ограничения, определенные в сертификате, соблюдаются, поэтому некоторые сертификаты могут не подойти для подписи приложений AIR.

Примечание. Когда возможно, ADT использует параметры прокси среды выполнения Java для подключения к интернет-ресурсам, что необходимо для проверки отозванных сертификатов и получения временных отметок. Если при использовании ADT у вас возникают проблемы с подключением к этим интернет-ресурсам, а сетевые параметры должны включать особые настройки прокси, возможно, следует изменить конфигурацию прокси рабочей среды Java.

Синтаксис параметров подписи 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