Resumen: Esta guía es para administradores de TI que distribuyen la aplicación Android de su organización por sí mismos, por ejemplo, a través de Mobile Device Management (MDM). Explica cómo verificar la firma digital de un archivo APK o AAB de Speakap contra las huellas digitales oficiales de nuestro certificado, para que sepa que el archivo es auténtico y no ha sido modificado.
Advertencia de uso: Use esta guía solo si usted maneja la distribución de su aplicación por sí mismo (por ejemplo, a través de MDM, un recurso compartido de archivos seguro o una tienda de aplicaciones empresariales privada). Esto no se aplica a las aplicaciones que se publican directamente en Google Play Store por Speakap, ya que Google gestiona esa vía de entrega de principio a fin.
¿Por qué verificar?
Cuando distribuimos una aplicación a través de Google Play Store, podemos garantizar que el archivo de la aplicación que obtienen los usuarios es exactamente el que construimos. Cuando no manejamos la distribución de principio a fin, es técnicamente posible que un archivo de aplicación sea alterado antes de llegar a usted o a sus usuarios.
Para evitar eso, firmamos todas nuestras compilaciones con nuestros propios certificados. Si la firma de una aplicación coincide con la nuestra, eso garantiza su integridad y autenticidad: fue creada por nosotros y no se hicieron modificaciones después.
Compartimos libremente nuestras huellas digitales públicas para que pueda verificar cada archivo de aplicación que reciba de nosotros con una sencilla herramienta de línea de comandos. Puede que tenga mejores maneras de hacer esto automáticamente dentro de sus propios sistemas, y le animamos a usar la mejor solución que tenga.
Paso 1: Obtenga la herramienta de línea de comandos
Dependiendo del tipo de archivo, necesitará la herramienta de línea de comandos apksigner o keytool de Google.
Paso 2: Ejecute el comando
Abra su terminal y ejecute el comando correspondiente a su tipo de archivo.
Para un archivo APK:
apksigner verify --print-certs su-app.apk
Para un archivo AAB:
keytool -printcert -jarfile su-app.aab
Nota: como con cualquier herramienta de línea de comandos, debe añadir la herramienta a su PATH, o usar la ruta completa de la carpeta de la herramienta al ejecutar el comando.
Paso 3: Compare los valores con los certificados oficiales de Speakap
Revise la salida del comando y compare los valores de las huellas digitales con las firmas oficiales a continuación. Usamos dos certificados, y su APK/AAB estará firmado con uno de ellos. Debe obtener exactamente los mismos valores que uno de los siguientes.
Certificado 1
- SHA-256: 49:0B:36:AD:7E:A8:7C:CF:C6:45:B1:DB:5A:66:0D:9F:FE:3F:E8:03:4C:81:48:4B:23:C7:3C:4F:44:96:A6:40
- SHA-1: 5F:51:D8:79:F7:02:FE:5D:A6:C2:3E:8D:12:52:4A:31:8C:FE:95:D3
- MD5: 40:51:CE:2F:CD:64:F9:A7:CF:52:3E:03:65:AB:CD:D1
Certificado 2
- SHA-256: 15:5D:46:AE:9D:32:A0:0C:2E:25:4F:B5:60:4E:DD:DC:EC:15:B2:0D:80:66:1F:EF:91:54:23:7C:9D:F3:9C:A6
- SHA-1: 39:67:BE:F6:BC:CC:69:9B:58:A0:2B:A4:C2:E1:75:E1:42:E9:D4:E2
- MD5: 53:EE:BB:72:94:3D:32:20:8F:AA:C4:D8:1C:89:26:F1
Ejemplos de salida de comandos
Para ayudarle a verificar, aquí tiene cómo se ve una salida exitosa para ambos tipos de archivo.
Salida para un archivo APK firmado con el Certificado 1:
DN del certificado del firmante #1: CN=Patrick van der Mijl, OU=Speakap, O=Speakap, L=Amsterdam, ST=Noord-Holland, C=NL
digest SHA-256 del certificado: 490b36ad7ea87ccfc645b1db5a660d9ffe3fe8034c81484b23c73c4f4496a640
digest SHA-1 del certificado: 5f51d879f702fe5da6c23e8d12524a318cfe95d3
digest MD5 del certificado: 4051ce2fcd64f9a7cf523e0365abcdd1
Salida para un archivo AAB firmado con el Certificado 2:
Propietario: CN=Patrick van der Mijl, O=Speakap, C=NL
Emisor: CN=Patrick van der Mijl, O=Speakap, C=NL
Número de serie: 2999e34b
Huellas digitales del certificado:
SHA1: 39:67:BE:F6:BC:CC:69:9B:58:A0:2B:A4:C2:E1:75:E1:42:E9:D4:E2
SHA256: 15:5D:46:AE:9D:32:A0:0C:2E:25:4F:B5:60:4E:DD:DC:EC:15:B2:0D:80:66:1F:EF:91:54:23:7C:9D:F3:9C:A6
Dónde encontrar apksigner y keytool
Estas herramientas forman parte del SDK estándar de Android y del JRE.
Ubicaciones predeterminadas en Mac:
- apksigner: /Users/user/Library/Android/sdk/build-tools/xx.x.x/apksigner
- keytool (Android Studio): /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/keytool
- keytool (Java): /Users/user/Library/Java/JavaVirtualMachines/jbr-xx.x.xx/Contents/Home/bin/keytool
Documentación oficial y descargas:
- Referencia de apksigner: https://developer.android.com/tools/apksigner
- Descargar herramientas de línea de comandos: https://developer.android.com/studio#downloads
- Referencia de keytool: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html
Preguntas frecuentes
¿Por qué necesito verificar el archivo de la aplicación yo mismo?
Si distribuye la aplicación a través de su propio MDM o recurso compartido de archivos, omite las comprobaciones integradas de Google Play Store. Comparar las huellas digitales del certificado usted mismo confirma que el archivo fue creado por Speakap y no fue modificado en su camino hacia usted.
¿Qué debo hacer si los valores no coinciden con ninguno de los certificados?
No distribuya el archivo a su personal. Si las huellas digitales no coinciden exactamente con los valores oficiales de Speakap, no se puede confirmar la integridad del archivo. Separe el archivo y contáctenos en technicalimplementations@speakap.nl para obtener una compilación nueva.
¿Puedo verificar un archivo .aab con apksigner?
No. La herramienta apksigner solo funciona con archivos .apk. Para un archivo .aab, use keytool de Java como se muestra en el paso 2.
¿Aún tiene problemas?
Envíenos un correo electrónico a technicalimplementations@speakap.nl con el nombre del archivo, el comando exacto que ejecutó y la salida que recibió, y le ayudaremos.