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?
- Cómo se firman los archivos .apk
- Aplicación Android de Eclipse: Ejecutar firmada con certificado real
- ¿Qué precauciones y advertencias debemos conocer al usar el nuevo "APK Signature Scheme v2"?
- Perdió la clave privada para firmar android apk. ¿Se puede publicar la aplicación en Android Market?
- ¿Cómo puedo firmar automáticamente las solicitudes de facturación?
- Archivo de configuración de inicio de sesión de Google para varios desarrolladores
- Fallo
- Cambio de contraseña de contraseña de firma de android
- Error de "archivo de paquete no firmado correctamente": detecte si ocurre o no con la aplicación de Google Play.
- ¿Genera un almacén de claves para una aplicación de Android en el asistente Exportar aplicación de Android?
- Gradle firma sabores con diferentes claves en Android
- Firmar APK sin poner información de almacén de claves en build.gradle
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