Opciones de firma de código de ADT

ADT utiliza Java Cryptography Architecture (JCA) para acceder a las claves privadas y los certificados para firmar aplicaciones de AIR. Las opciones de firma identifican el almacén de claves, así como la clave privada y el certificado que en él se encuentran.

El almacén de claves debe incluir tanto la clave privada como la cadena de certificación asociada. Si el certificado de firma está encadenado con un certificado de confianza en un ordenador, el contenido del nombre común del certificado se presenta como el nombre del editor en el cuadro de diálogo de la instalación de AIR.

ADT exige que el certificado cumpla con la norma x509v3, RFC3280 (en inglés), e incluya la extensión de uso mejorado de claves con los valores correspondientes para la firma de códigos. Se respetan las limitaciones definidas propias del certificado y estas podrían descartar el uso de algunos certificados para firmar aplicaciones de AIR.

Nota: ADT utiliza la configuración de proxy para el entorno de ejecución de Java (JRE), si procede, para conectarse a recursos de Internet con la finalidad de comprobar listas de revocación de certificados y obtener marcas de hora. Si tiene algún problema con la conexión a recursos de Internet cuando utiliza ADT y la red requiere una configuración de proxy concreta, es posible que necesite ajustar la configuración de proxy para JRE.

Sintaxis de las opciones de firma de AIR

Las opciones de firma utilizan la siguiente sintaxis (en una sola línea de comandos):

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

-alias Alias de una clave en el almacén de claves. No es necesario especificar un alias si el almacén de claves contiene un solo certificado. Si no se especifica ningún alias, ADT utiliza la primera clave del almacén de claves.

No todas las aplicaciones con administración del almacén de claves permiten que se asigne un alias a los certificados. Si hace uso del almacén de claves del sistema en Windows, por ejemplo, utilice como alias el nombre distinguido del certificado. Se puede utilizar la utilidad Java Keytool para enumerar los certificados disponibles para poder determinar el alias. Por ejemplo, si se ejecuta el comando:

keytool -list -storetype Windows-MY

se produce una salida para un certificado como la siguiente:

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 hacer referencia a este certificado en la línea de comandos de ADT, defina el alias en:

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

En Mac OS X, el alias de un certificado en la Llave es el nombre que se muestra en la aplicación Acceso a Llaves.

-storetype: tipo de almacén de claves, determinado por la implementación del almacén de claves. La implementación del almacén de claves predeterminada incluida con la mayoría de las instalaciones de Java es compatible con los tipos JKS y PKCS12. Java 5.0 ofrece compatibilidad con el tipo PKCS11, para acceder a almacenes de claves en tokens de hardware, y al tipo Keychain, para acceder a la Llave de Mac OS X. Java 6.0 ofrece compatibilidad con el tipo MSCAPI (en Windows). Si se han instalado y configurado otros proveedores de JCA, puede que se disponga además de otros tipos de almacenes de claves. Si no se especifica ningún tipo de almacén de claves, se utiliza el tipo predeterminado para el proveedor de JCA predeterminado.

Tipo de almacén

Formato del almacén de claves

Versión mínima de Java

JKS

Archivo de almacén de claves de Java (.keystore)

1.2

PKCS12

Archivo PKCS12 (.p12 o .pfx)

1.4

PKCS11

Token de hardware

1.5

KeychainStore

Llave de Mac OS X

1.5

Windows-MY o Windows-ROOT

MSCAPI

1.6

-keystore : ruta al archivo del almacén de claves para tipos de almacén basados en archivo.

-storepass : contraseña para acceder al almacén de claves. Si no se especifica, ADT la solicita.

-keypass : contraseña para acceder a la clave privada que se utiliza para firmar la aplicación de AIR. Si no se especifica, ADT la solicita.

Nota: si se indica una contraseña como parte del comando de ADT, los caracteres de la contraseña se guardan en el historial de la línea de comandos. Por lo tanto, el uso de las opciones -keypass o -storepass no se recomienda cuando la seguridad del certificado es importante. También se debe tener en cuenta que cuando se omiten las opciones de contraseña, los caracteres escritos en la solicitud de contraseña no se muestran (por los mismos motivos de seguridad). Simplemente escriba la contraseña y presione la tecla Intro.

-providerName: proveedor de JCA para el tipo de almacén de claves especificado. Si no se especifica, ADT utiliza el proveedor predeterminado para ese tipo de almacén de claves.

-tsa : especifica la URL de un RFC3161 (en inglés) para marcar la hora en la firma digital. Si no se especifica una URL, se utiliza un servidor de marcas de hora predeterminado suministrado por Geotrust. Cuando la firma de una aplicación de AIR lleva una marca de hora, la aplicación puede instalarse después de caducado el certificado de firma porque la marca de hora verifica que el certificado era válido al momento de firmar.

Si ADT no puede conectarse al servidor de marcas de hora, se cancela la firma y no se produce ningún paquete. La marca de hora se puede desactivar especificando -tsa none. Sin embargo, una aplicación de AIR empaquetada sin marca de hora no se puede instalar una vez caducado el certificado de firma.

Nota: muchas de las opciones de firma equivalen a la misma opción de la utilidad Java Keytool. La utilidad Keytool sirve para examinar y administrar almacenes de claves en Windows. La utilidad de seguridad de Apple® sirve para lo mismo en Mac OS X.

-provisioning-profile Archivo de suministro de Apple iOS. (Obligatorio únicamente para empaquetar aplicaciones de iOS.)

Ejemplos de opciones de firma

Firma con un archivo .p12:

-storetype pkcs12 -keystore cert.p12

Firma con el almacén de claves de Java predeterminado:

-alias AIRcert -storetype jks

Firma con un almacén de claves de Java específico:

-alias AIRcert -storetype jks -keystore certStore.keystore

Firma con la Llave de Mac OS X:

-alias AIRcert -storetype KeychainStore -providerName Apple

Firma con el almacén de claves del sistema de Windows:

-alias cn=AIRCert -storeype Windows-MY

Firma con un token de hardware (consulte las instrucciones del fabricante del token para ver cómo se configura Java para utilizar el token y para obtener el valor correcto de providerName):

-alias AIRCert -storetype pkcs11 -providerName tokenProviderName

Firma sin incorporar una marca de hora:

-storetype pkcs12 -keystore cert.p12 -tsa none