¿Puedo usar el mismo archivo de almacén de claves para firmar dos aplicaciones diferentes?

89

Tengo que cargar una nueva aplicación, es solo el diseño lo que es un poco diferente. Ayer generé el archivo del almacén de claves para firmar la aplicación. ¿Puedo usar lo mismo?

Raluca Lucaci
fuente
5
sí, puede (también, ¿lo intentó antes de preguntar?)
njzk2

Respuestas:

96

Puede usar eso keystorepara cualquier cantidad de aplicaciones.

No es necesario generar un nuevo almacén de claves.

Chirag
fuente
6
Y para 'Alias', ¿qué debo escribir?
Dr.jacky
12
Un almacén de claves CONTIENE los pares de claves públicas / privadas que componen un certificado de firma. Un almacén de claves puede contener muchos pares de claves. Un 'alias' es una referencia a un par de claves en particular en el almacén de claves. Un almacén de claves puede contener todos sus pares de claves, pero debe tener un par de claves por aplicación. Utilice el nombre de la aplicación que está firmando como alias. Puede tener contraseñas separadas para su almacén de claves y para cada par de claves que contiene. Puede cambiar estas contraseñas e importar / exportar pares de claves desde el almacén de claves o agregar nuevos pares de claves a su almacén de claves. Todo esto se hace con la línea de comando 'keytool'. Búscalo.
brycewjohnson
@brycewjohnson ¿Se pueden agregar nuevos pares al almacén de claves a través de una GUI?
CinCout
43

Haré un argumento en contra de la respuesta de consenso hasta ahora.

Estoy de acuerdo en que para la mayoría de los autores de aplicaciones la mayor parte del tiempo, compartir el mismo almacén de claves / certificado / contraseña entre sus aplicaciones funcionará bien. Lo fundamental es utilizar " el mismo certificado durante la vida útil esperada de sus aplicaciones " para que la aplicación pueda actualizarse.

Pero puedo pensar en una muy buena razón para tener almacenes de claves separados para aplicaciones o familias de aplicaciones separadas. Si cree que alguna vez podría querer vender una aplicación a otra persona para que la publique como una actualización de la original, tendrá que compartir su único almacén de claves y contraseña con esa persona para hacerlo. Probablemente no sea un gran problema, pero un poco de preocupación para usted y, quizás, un problema de diligencia debida para un comprador lo suficientemente grande.

Además, realmente no leo la misma línea en la documentación de la misma manera que lo hace @ol_v_er. Creo que la línea actual:

Debe firmar todas sus aplicaciones con el mismo certificado durante la vida útil esperada de sus aplicaciones.

(tenga en cuenta la falta de una coma en la versión actual) simplemente enfatiza que la recomendación de 'vida útil' se aplica a todas las aplicaciones, sin indicarle que use el mismo certificado para todas sus aplicaciones.

Anne Gunn
fuente
6
¡Mantener almacenes de claves separados para cada aplicación debería ser el camino a seguir!
Sufian
42

La documentación oficial nos dice:

En general, la estrategia recomendada para todos los desarrolladores es firmar todas sus aplicaciones con el mismo certificado, durante la vida útil esperada de sus aplicaciones. Hay varias razones por las que debería hacerlo ...

https://developer.android.com/studio/publish/app-signing.html#considerations

Entonces sí, intente firmar todas sus aplicaciones con el mismo certificado.

ol_v_er
fuente
8
Y para 'Alias', ¿qué debo escribir?
Dr.jacky
6
Para hacerlo simple, también use lo mismo para todas sus aplicaciones.
ol_v_er
18

Quiero agregar algunas aclaraciones aquí, porque esta pregunta y las respuestas proporcionadas me confunden. Es fundamental comprender qué es realmente un almacén de claves.

Un almacén de claves es solo un medio para almacenar de forma segura el par de claves pública / privada que se utiliza para firmar sus aplicaciones de Android. Entonces sí, puede usar el mismo almacén de claves para firmar múltiples apks, sin ningún problema. También puede usar el mismo alias (cada alias es un certificado) para firmar varios apks, y funcionará. Sin embargo, tiene implicaciones de seguridad. Si su alias único está comprometido, entonces todas sus aplicaciones estarán comprometidas.

Sin embargo, si tiene la intención de vender los derechos de sus aplicaciones algún día, entonces usar el mismo alias para todas sus aplicaciones puede no ser una buena idea. Sin embargo, usar el mismo almacén de claves, siempre que use un alias diferente para cada apk, puede no ser necesariamente una mala opción. Estoy seguro de que hay una manera de mover un certificado de un almacén de claves a otro, de modo que pueda proporcionar de forma segura las claves necesarias solo para ese certificado a su comprador.

Para que quede muy claro, un almacén de claves es solo eso, un medio de almacenamiento de claves. No juega ningún papel real en el proceso de firma de una apk, sino que solo sirve para almacenar las claves que se utilizan realmente para firmar la apk.

Referencias:

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

https://www.digitalocean.com/community/tutorials/java-keytool-essentials-working-with-java-keystores

Anthony Stivers
fuente
1
No publique respuestas idénticas a varias preguntas. Publique una buena respuesta, luego vote / marque para cerrar las otras preguntas como duplicadas. Si la pregunta no es un duplicado, adapte sus respuestas a la pregunta.
Paul Roub
Disculpas Soy un novato en SO.
Anthony Stivers
1
No tengo suficiente representante para votar por un duplicado. Entonces, si desea votar las siguientes preguntas como duplicadas, creo que esta pregunta es la más apropiada para no ser duplicada. Es el primer puesto en Google para las palabras clave relevantes y tiene las respuestas más relevantes. stackoverflow.com/questions/13023509/… stackoverflow.com/questions/14973205/… stackoverflow.com/questions/10514597/…
Anthony Stivers
¡Espere! ¿Cómo puedo usar el mismo almacén de claves pero con un alias diferente para cada aplicación?
Ziad H.
5

¡Por supuesto! Puede utilizar el mismo archivo de almacén de claves tantas veces como desee. Siempre es mejor utilizar el mismo archivo de almacén de claves para todas las aplicaciones que desarrolle. Eso ayudará si desea actualizar o modificar la aplicación. En ese momento debes firmar tu solicitud con la misma clave.

Rohit
fuente
2

Firmo todas mis aplicaciones con el mismo certificado (almacén de claves). Esto es una ventaja si cambio de opinión y quiero que mis aplicaciones compartan sus datos.

Como sabrá, Android identifica cada aplicación con un UID. Si todas sus aplicaciones están firmadas por el mismo certificado, puede solicitar a Android que asigne la misma identificación de usuario a más de una aplicación y, a su vez, hacer que se ejecuten en un solo proceso y compartir los datos.

Desde android doc android: sharedUserId

android: sharedUserId

El nombre de un ID de usuario de Linux que se compartirá con otras aplicaciones. De forma predeterminada, Android asigna a cada aplicación su propio ID de usuario único. Sin embargo, si este atributo se establece en el mismo valor para dos o más aplicaciones, todas compartirán el mismo ID, siempre que estén también firmadas por el mismo certificado. Las aplicaciones con el mismo ID de usuario pueden acceder a los datos de los demás y, si lo desea, ejecutar en el mismo proceso

sujith
fuente
1

Actualizacion reciente

Si desea inscribirse en la firma de aplicaciones de Google , debe usar una nueva clave diferente para firmar su apk o paquete; de ​​lo contrario, después de cargar la consola de Google, aparecerá un mensaje de error que dice

Subiste un APK o un paquete de aplicaciones de Android que está firmado con una clave que también se usa para firmar los APK que se entregan a los usuarios. Debido a que está inscrito en la firma de aplicaciones de Google Play, debe firmar su APK o Android App Bundle con una nueva clave antes de cargarlo.

Riya Parmar
fuente
Pude generar una nueva clave dentro de la pantalla de firma de Android Studio apk. Genere un nuevo almacén de claves y alias y puede funcionar. Funcionó para mí.
Numan Karaaslan