¿Qué es el archivo de almacén de claves de Android y para qué se utiliza?

128

Esta es una pregunta general, pero particularmente estoy interesado en su uso para Android. ¿Qué es un archivo de almacén de claves y para qué se utiliza?

¿Pueden varias aplicaciones de Android usar el mismo almacén de claves para firmar su aplicación (¿qué significa exactamente "firmar" un .apk?) Y cuáles son las implicaciones (si las hay) de esto?

Christopher Perry
fuente
1
Parece que estás combinando dos temas. Primero es el almacén de claves, y segundo es la firma de APK. Consulte también los aspectos internos de seguridad de Android de Nikolay Elenkov : una guía detallada de la arquitectura de seguridad de Android .
jww

Respuestas:

130

La respuesta que proporcionaría es que un archivo de almacén de claves es para autenticarse ante cualquier persona que lo solicite. No se limita a solo firmar archivos .apk, puede usarlo para almacenar certificados personales, firmar datos para transmitir y una gran variedad de autenticación.

En términos de lo que haces con él para Android y probablemente de lo que estás buscando, ya que mencionas firmar apk, es tu certificado. Está marcando su solicitud con sus credenciales. Puede marcar múltiples aplicaciones con la misma clave, de hecho, se recomienda que use un certificado para marcar múltiples aplicaciones que escriba. Es más fácil hacer un seguimiento de las aplicaciones que le pertenecen.

No estoy seguro de lo que quieres decir con implicaciones. Supongo que significa que nadie más que el titular de su certificado puede actualizar su solicitud. Eso significa que si lo libera en la naturaleza, pierde el certificado que usó para firmar la aplicación, entonces no puede lanzar actualizaciones, así que mantenga ese certificado seguro y haga una copia de seguridad si es necesario.

Pero además de firmar apks para liberar en la naturaleza, puede usarlo para autenticar su dispositivo en un servidor a través de SSL si así lo desea, (también relacionado con Android), entre otras funciones.

Otra
fuente
2
Muy buena respuesta. ¡También debe tener en cuenta aquí que necesita un archivo de almacén de claves si va a usar "datos push" en su aplicación!
KapteinMarshall
¿La máquina Keystore es específica? ¿O podemos usarlo en cualquier máquina para actualizar nuestra aplicación?
Yawar
77
Buena explicación. ¿Puede explicar también por qué necesitamos KeyStorePassword, Key alias, KeyPassword? Parece redundante tener tres claves.
ARCA
18

Android Market requiere que firmes todas las aplicaciones que publiques con un certificado, utilizando un mecanismo de clave pública / privada (el certificado está firmado con tu clave privada). Esto proporciona una capa de seguridad que evita, entre otras cosas, que los atacantes remotos envíen actualizaciones maliciosas a su aplicación al mercado (todas las actualizaciones deben firmarse con la misma clave).

De la Guía de firma de aplicaciones del sitio para desarrolladores de Android:

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

El uso de la misma clave tiene algunos beneficios: uno es que es más fácil compartir datos entre aplicaciones firmadas con la misma clave. Otra es que permite que múltiples aplicaciones firmadas con la misma clave se ejecuten en el mismo proceso, por lo que un desarrollador puede construir más aplicaciones "modulares".

Alexander Lucas
fuente
10

Puede encontrar más información sobre el proceso de firma en la documentación oficial de Android aquí: http://developer.android.com/guide/publishing/app-signing.html

Sí, puede firmar varias aplicaciones con el mismo almacén de claves. Pero debe recordar una cosa importante: si publica una aplicación en Play Store, debe firmarla con un certificado sin depuración. Y si un día desea publicar una actualización para esta aplicación, el almacén de claves utilizado para firmar el apk debe ser el mismo. De lo contrario, no podrá publicar su actualización.

Raphaël Titol
fuente
No, esto está mal. El almacén de claves que usa para firmar el apk podría ser diferente, pero la clave que usa para firmar el apk debe ser la misma. El archivo de almacén de claves es solo un archivo que solía almacenar la información de clave y certificado, puede tener varias entidades clave en el mismo archivo de almacén de claves.
zeleven
0

La idea de una herramienta clave es firmar su apk con un identificador único que indique la fuente de ese apk. Se utiliza un archivo de almacén de claves (por lo que entiendo) para la depuración, por lo que su apk tiene la funcionalidad de una herramienta clave sin firmar su apk para producción. Entonces, sí, para fines de depuración, debe poder firmar múltiples apk con un solo almacén de claves. Pero comprenda que, al pasar a producción, necesitará herramientas clave únicas como identificadores para cada apk que cree.

Adam Storm
fuente
No necesita firmar una aplicación para depurarla, ya sea en el emulador o en un dispositivo real.
Marcus
No quise decir que DEBES firmarlo para depurarlo ... pero puedes usar el almacén de claves como una implementación de prueba de tu herramienta de claves.
Adam Storm
No creo que keytoolsea ​​a lo que te refieres. keytool es un programa java utilizado para generar almacenes de claves.
Otra
sí, tienes razón, keytool no es lo que quiero decir. Supongo que 'clave' es lo que quiero decir. Simplemente estaba tratando de explicarle al autor de la pregunta que puede tener una clave apk comunitaria para la depuración, pero después de la publicación, cada apk necesitará tener claves únicas para editar y actualizar.
Adam Storm
Sin embargo, no necesitan claves únicas ... puede firmar múltiples apk con una clave privada, en realidad se prefiere que lo haga. ¿Te imaginas hacer un seguimiento de 10 certificados / claves diferentes para 10 aplicaciones?
Otra