Noticias
Tendencia

Apple actualiza el certificado intermedio de firma de apps

Una de las partes esenciales de cualquiera de nuestra apps que quiera publicarse en las tiendas de iOS, macOS, tvOS o watchOS (sí, recordad que hay tienda independiente de watchOS), es la firma digital.

¿Qué es la firma digital?

La firma es el proceso por el que se calcula un hash o valor de verificación, que es único para cada fichero basado en su contenido. De esta forma, cuando un solo número, un solo byte cambia en nuestro fichero, la firma deja de ser válida porque no coincide el valor de verificación guardado con el nuevo obtenido de un fichero modificado.

¿Y cómo se previene que alguien modifique el hash posteriormente a su cálculo para engañar a cualquier comprobación? Firmándolo digitalmente. La firma digital se basa en una autoridad que emite un certificado intermedio que permite a su vez, generar otros certificados que se componen de clave pública y privada.

Firma digital

Para el proceso de validación de las apps y comprobar que el fichero en sí no haya sido modificado, Apple usa un sistema de firma por clave privada. Este se basa en que dicha clave privada (que no debe ser expuesta y siempre guardada preciosamente), puede ser usada para firmar cualquier cosa. ¿Y qué es firmar? Es cifrar. Cifrar un dato con una clave privada. ¿Qué se cifra? El valor del hash.

De esta forma, cuando queremos saber cuál es el valor del hash que tenía un fichero cuando se firmó, para comprobarlo en cualquier momento, tenemos que descifrar aquello que hemos cifrado (que hemos firmado). ¿Y cómo se puede descifrar algo firmado con una clave privada de firma de un certificado? Con su clave pública. La pública no permite cifrar nada: solo descifrar.

Firma un documento
Firma de un documento de firma digital

La forma más fácil de entenderlo es como si tuviéramos un compresor (un zip) que codifica con clave todo lo que comprime. Y solo podemos descomprimirlo usando otro programa (un unzip) que usa la misma clave que se usó para comprimir. En eso se basa comprobar una firma: descifro el hash que se cifró, calculo el del fichero que quiero verificar y si coinciden, es que el fichero no se ha modificado. Si los hashes no coinciden, entonces es que el fichero ha sido modificado: la firma no es válida.

Verificación de firma digital

Como el hash viene cifrado por una clave privada, el emisor del certificado que cifró ese dato es el que se reconoce como firmante. Se ha firmado con un certificado de X (de Apple en el caso del App Store).

Cambio en el certificado intermedio

El certificado raíz de Apple, es el que valida la autoridad certificadora que es la propia compañía. Es un certificado cuya clave pública es capaz de descifrar y validar todos los certificados finales de usuario que se usan (como los que usamos para firmar apps).

Este certificado raíz tiene una parte crítica que, en el caso de cualquier empresa, debe estar escondida bajo 7.000 sellos en una cámara acorazada en las profundidades del infierno y con un ejército de demonios que llevan eones sin comer vigilándolo: su clave privada. Es aquella que es capaz de generar los certificados que validará la autoridad certificadora.

Estructura de certificados
Estructura de certificados

Pero con el propósito de no comprometer esa clave privada, lo que hacen las autoridades certificadoras es crear certificados intermedios. Un certificado que se genera a partir de la clave privada del certificado raíz, que se valida con su clave pública, y que permite a su vez generar un nuevo nivel de certificados: los certificados de usuario final. Aquellos que son los que usamos para firmar nuestras apps y que cada desarrollador con cuenta de pago tiene.

Pues bien, después de explicar todo esto ahora podemos decir que Apple actualizará su actual certificado intermedio que expira (deja de tener validez) el 20 de febrero de 2023. Anticipándose en 2 años para prevenir problemas de expiración de certificados generados con ese intermedio que nunca podrían tener una validez mayor que el certificado del que proceden.

¿Supone eso algún problema en nuestras cuentas, apps o firmas de las mismas? No. Desde el próximo 28 de enero, Xcode se encargará generar el nuevo certificado basado en el nuevo intermedio cuando caduque el actual que usamos y todos tan felices.

Eso sí, siempre que usemos Xcode 11.4.1 o superior. Si usamos una versión anterior tenemos un problema porque Xcode dejará de ser capaz de gestionar automáticamente y firmar desde el IDE cualquier app que queramos subir. Si usamos una versión anterior a Xcode 11.4.1, tendremos que bajar el nuevo certificado generado por el nuevo intermedio de forma manual y usar la línea de comandos de Xcode para firmar las apps. Ya no podrá hacerse con Xcode. Es importante tener esto en cuenta.

Firma Digital
Firma Digital

Si esto es demasiado complejo, nuestra otra solución es generar el Archive con la versión que usemos de Xcode anterior a la 11.4.1, y luego usar una versión posterior para firmar y subir (o distribuir) esa app archivada en una versión obsoleta.

Pero ojo, si usamos cualquiera de estos servicios:

  • Apple Push Notification service SSL (Sandbox)
  • Apple Push Notification service SSL (Sandbox y Producción)
  • macOS Apple Push Notification service SSL (Producción)
  • Website Push ID
  • Servicios WatchKit
  • Servicios VoIP
  • Pass Type ID
  • Pass Type ID con soporte NFC
  • App Store Receipt Signing

Estos servicios aún seguirán usando certificados generados por el anterior intermedio, por lo que deberemos conservar el certificado antiguo y el nuevo para cada caso completo. Al menos hasta finales de año cuando se actualizarán estos servicios con el nuevo certificado intermedio.

No es un cambio que tal vez sea muy crítico, pero es importante estar al tanto de estos cambios y entenderlo para nuestro trabajo. Y poco más, espero que os haya gustado el artículo, no olvidéis compartirlo en redes sociales para informar a vuestros compañeros y amigos de este cambio y, como decimos siempre, un saludo y Good Apple Coding.

Nota oficial de Apple: Apple Worldwide Developer Relations Intermediate Certificate.

Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Artículos relacionados

Botón volver arriba