Descripción del almacén de claves, certificados y alias

¿Es el keystore el certificado real, o es el alias del certificado?

Si utilizo un alias diferente para firmar mi aplicación, ¿afectará las actualizaciones del mercado? ¿O necesitaría firmar mi aplicación con un almacén de claves diferente para estropear las cosas? ¿Y dónde está la información bajo alias visible desde?

El archivo keystore generado por Keytool almacena pares de claves privadas y públicas. Cada par o entrada almacenada en el almacén de claves se hace referencia por un alias único. En breve:

Entrada de almacén de claves = privado + par de claves públicas = identificado por un alias

El almacén de claves protege cada clave privada con su contraseña individual y también protege la integridad de todo el almacén de claves con una contraseña (posiblemente diferente).

Por ejemplo, al firmar una aplicación de Android con la opción Exportar Firmado Paquete de Aplicación de la herramienta Eclipse Android, se le pedirá que seleccione primero un almacén de claves y luego se le pida que seleccione un alias / entrada / par de ese almacén de claves. Después de proporcionar las contraseñas para el almacén de claves y el alias elegido, la aplicación se firma y la clave pública (el certificado) para ese alias se incrusta en el APK.

Ahora, para responder a su pregunta, sólo puede liberar una actualización a una aplicación que se haya firmado con el alias 'foo' firmando de nuevo la actualización con el mismo alias. Perder el almacén de claves donde se almacena tu alias evitaría que publicases una versión actualizada de tu aplicación.

Sin embargo, hay una manera de firmar una aplicación con un nuevo alias, pero implica clonar un alias existente en el almacén de claves utilizando keytool -keyclone :

Crea una nueva entrada de almacén de claves, que tiene la misma clave privada y cadena de certificados que la entrada original.

La entrada original se identifica por alias (que por defecto es "mykey" si no se proporciona). La nueva entrada (de destino) se identifica por dest_alias. Si no se proporciona ningún alias de destino en la línea de comandos, se le pedirá al usuario.

Si la contraseña de la clave privada es diferente de la contraseña del almacén de claves, la entrada sólo se clonará si se proporciona un keypass válido. Esta es la contraseña utilizada para proteger la clave privada asociada al alias. Si no se proporciona ninguna contraseña de clave en la línea de comandos y la contraseña de clave privada es diferente de la contraseña de almacén de claves, se le solicitará al usuario. La clave privada en la entrada clonada puede estar protegida con una contraseña diferente, si lo desea. Si no se proporciona ninguna opción nueva en la línea de comandos, se le pedirá al usuario la contraseña de la nueva entrada (y puede elegir que sea la misma que para la clave privada de la entrada clonada).

Más información:

http://download.oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html

http://developer.android.com/guide/publishing/app-signing.html

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.