Opções de assinatura de código ADT

O ADT usa o JCA (arquitetura de criptografia Java) para acessar chaves privadas e certificados para assinar aplicativos do AIR. As opções de assinatura identificam o armazenamento de chaves, a chave privada e o certificado dentro desse armazenamento de chaves.

O armazenamento de chaves deve incluir a chave privada e a cadeia de certificado associada. Se o certificado de assinatura estiver vinculado a um certificado confiável em um computador, o conteúdo do campo de nome comum do certificado será exibido como o nome do editor na caixa de diálogo de instalação do AIR.

O ADT requer que o certificado esteja em conformidade com o padrão x509v3 ( RFC3280 ) e inclua a extensão de uso de chave estendida com os valores adequados para assinatura do código. As restrições definidas no certificado são respeitadas e poderiam impedir o uso de alguns certificados para assinar aplicativos do AIR.

Nota: O ADT usa as configurações de proxy do ambiente de runtime Java, quando apropriado, para conectar aos recursos de Internet para verificar listas de revogação de certificado e obter carimbos de data/hora. Se encontrar problemas para se conectar a estes recursos da Internet ao usar o ADT e sua rede exigir configurações de proxy específicas, você pode precisar configurar as configurações de proxy do JRE.

Sintaxe de opções de assinatura do AIR

As opções de subscrição utilizam a seguinte sintaxe (numa linha de comando individual):

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

-alias O alias de uma chave no armazenamento de chaves. Especificar um alias não é necessário quando um armazenamento de chaves contém apenas um único certificado. Se nenhum alias for especificado, o ADT usará a primeira chave do armazenamento de chaves.

Nem todos os aplicativos de gerenciamento do armazenamento de chaves permitem que um alias seja atribuído a certificados. Ao usar o armazenamento de chaves do sistema Windows, por exemplo, use o nome distinto do certificado como o alias. Você pode usar o utilitário Java Keytool para listar os certificados disponíveis para que possa determinar o alias. Por exemplo, executar o comando:

keytool -list -storetype Windows-MY

produz uma saída como a seguinte para um certificado:

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

Para se referir a esse certificado na linha de comando do ADT, defina o alias como:

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

No Mac OS X, o alias de um certificado no Keychain é o nome exibido no aplicativo Keychain Access.

-storetype O tipo de armazenamento de chaves, determinado pela implementação do armazenamento de chaves. A implementação de armazenamento de chaves padrão incluída na maioria das instalações de Java suporta os tipos JKS e PKCS12 . O Java 5.0 inclui suporte para o tipo PKCS11 , para acessar armazenamentos de chaves em tokens de hardware e para o tipo Keychain , para acessar o chaveiro do Mac OS X. O Java 6.0 inclui suporte para o tipo MSCAPI (no Windows). Se outros provedores de JCA tiverem sido instalados e configurados, tipos adicionais de armazenamentos de chaves podem estar disponíveis. Se nenhum tipo de armazenamento de chave for especificado, o tipo padrão para o provedor de JCA padrão será usado.

Tipo de armazenamento

Formato de armazenamento de chave

Versão mínima de Java

JKS

Arquivo de armazenamento de chave Java (.keystore)

1.2

PKCS12

Arquivo PKCS12 (.p12 ou .pfx)

1.4

PKCS11

Token de hardware

1.5

KeychainStore

Chaveiro do Mac OS X

1.5

Windows-MY ou Windows-ROOT

MSCAPI

1.6

-keystore O caminho para o arquivo de armazenamento de chaves para tipos de armazenamento com base no arquivo.

-storepass A senha exigida para acessar o armazenamento de chaves. Se não especificada, o ADT solicita a senha.

-keypass A senha exigida para acessar a chave privada usada para assinar o aplicativo do AIR. Se não especificada, o ADT solicita a senha.

Nota: Se você digitar uma senha como parte do comando do ADT, os caracteres da senha são gravados no histórico da linha de comando. Portanto, o uso de opções -keypass ou -storepass não é recomendado quando a segurança do certificado é importante. Observe também que ao omitir as opções de senha, os caracteres que você digita nos prompts de senha não são exibidos (por razões de segurança). Basta digitar a senha e pressionar a tecla Enter.

-providerName O provedor de JCA para o tipo de armazenamento de chaves especificado. Se não especificado, o ADT usa o provedor padrão para esse tipo de armazenamento de chave.

-tsa Especifica a URL de um servidor compatível com carimbo de data e hora RFC3161 para carimbar com data e hora a assinatura digital. Se nenhuma URL for especificada, um servidor padrão com carimbo de data/hora fornecido pela Geotrust será usado. Quando a assinatura de um aplicativo do AIR receber uma marca de data/hora, o aplicativo poderá ainda ser instalado depois que o certificado de assinatura expirar, porque a marca de data/hora verifica se o certificado era válido no momento da assinatura.

Se o ADT não puder se conectar ao servidor de carimbo de data/hora, a assinatura será cancelada e nenhum empacotamento será produzido. Especifique - tsa none para desabilitar o carimbo de data/hora. No entanto, um aplicativo do AIR empacotado sem um carimbo de data/hora deixa de poder ser instalado depois que o certificado de assinatura expira.

Nota: Muitas das opções de assinatura são equivalentes à mesma opção do utilitário Java Keytool. Você pode usar o utilitário Keytool para examinar e gerenciar armazenamentos de chaves no Windows. O utilitário de segurança da Apple® também pode ser usado para esse fim no Mac OS X.

-provisioning-profile O arquivo de aprovisionamento iOS da Apple. (Obrigatório apenas para compactação de aplicativos iOS.)

Exemplos de opção de assinatura

Assinatura com um arquivo .p12:

-storetype pkcs12 -keystore cert.p12

Assinatura com o armazenamento de chaves Java padrão:

-alias AIRcert -storetype jks

Assinatura com o armazenamento de chaves Java específico:

-alias AIRcert -storetype jks -keystore certStore.keystore

Assinatura com o chaveiro do Mac OS X:

-alias AIRcert -storetype KeychainStore -providerName Apple

Assinatura com o armazenamento de chaves do sistema Windows:

-alias cn=AIRCert -storeype Windows-MY

Assinatura com um token de hardware (consulte as instruções do fabricante do token sobre como configurar Java para usar o token e para o valor correto de providerName ):

-alias AIRCert -storetype pkcs11 -providerName tokenProviderName

Assinatura sem incorporar um carimbo de data/hora:

-storetype pkcs12 -keystore cert.p12 -tsa none