El esquema de seguridad de Apple para implementar aplicaciones en dispositivos iOS es notoriamente difícil de asimilar y ha creado muchos dolores de cabeza para los desarrolladores a través de mensajes de error inescrutables al implementar desde Xcode.
Sin embargo, el esquema de Apple es muy flexible y actualmente permite una serie de escenarios diferentes:
– las aplicaciones implementadas desde la App Store son confiables porque están firmadas criptográficamente por Apple
– las organizaciones empresariales pueden implementar aplicaciones para sus empleados sin publicarlas en la tienda de aplicaciones (las llamadas “aplicaciones de línea de negocios” que no tienen ningún negocio que se publique al público en general)
– los desarrolladores de aplicaciones pueden implementar binarios de desarrollo en (hasta 100 de) sus propios dispositivos para realizar pruebas
– los desarrolladores de aplicaciones pueden ejecutar un programa beta implementando directamente aplicaciones firmadas correctamente para los clientes
- ¿Qué factores fueron responsables de que las masas rechazaran la plataforma Windows Phone de Microsoft?
- Cómo usar el menú de la barra deslizante usando Swift en iOS sin un guión gráfico
- ¿Por qué OS X no está bloqueado como iOS para que los usuarios no puedan estropear su instalación?
- ¿Cómo se llama una secuencia de apertura en una aplicación de iOS?
- ¿Qué te gustaría ver en una aplicación de iOS que reemplaza tu GoPro?
Aquí hay algunas definiciones para los componentes en el esquema de Apple:
Identificadores : también conocidos como “identificadores de aplicación” o “identificadores de paquete”. Identifican de forma exclusiva su aplicación y, por lo general, tienen un nombre de dominio inverso, como com.company.product
Certificados: este es un certificado criptográfico otorgado por Apple. Funciona igual que SSL donde obtienes un certificado firmado por una autoridad. Apple firma la clave privada que usa para firmar diferentes partes de su aplicación. Los diferentes certificados crean diferentes tipos de confianza. Algunos le permiten firmar y enviar su solicitud para la App Store, mientras que otros permiten que el servidor web de su aplicación envíe notificaciones push a los usuarios a través de APNS. En el último caso, por ejemplo, Apple usa este certificado para confiar en el servidor web que envía la notificación push. De lo contrario, sería fácil para un atacante falsificar una notificación push válida y usuarios de spam. El certificado más común que crearía firma la clave que usa para implementar su aplicación en un dispositivo o enviarla a la App Store.
Cuando crea un certificado a través del portal de desarrolladores de Apple, debe crear su par de claves y enviar una “Solicitud de firma de certificado”, que al principio es bastante confusa para los desarrolladores que solo intentan ver su aplicación ejecutándose en un dispositivo.
Si visita el portal para desarrolladores, encontrará que puede crear certificados para Desarrollo o Distribución. Estos certificados están enraizados a diferentes autoridades, por lo que los dos mundos nunca se confunden (aunque todos los dispositivos iOS confían en ambos de una manera aparentemente igual).
Perfiles de aprovisionamiento : probablemente el componente más confuso del sistema, un perfil de aprovisionamiento indica los dispositivos para los que una aplicación está firmada correctamente. Si visita el portal del desarrollador, notará que puede crear dos tipos (nuevamente llamados Desarrollo y Distribución). Los perfiles de aprovisionamiento dicen que “las aplicaciones con este Identificador firmado con la clave privada de este Certificado están bien para ejecutarse en estos dispositivos”. Ahora que sabe que un perfil de aprovisionamiento está vinculado a un certificado, puede ver por qué debe decidir si desea crear un perfil de Desarrollo o Distribución. Los perfiles de desarrollo están limitados a 100 dispositivos. Los perfiles de distribución pueden ser perfiles de distribución Ad-Hoc o App Store. No estoy seguro de si los perfiles ad hoc tienen límites de dispositivo.
Podría preguntar, entonces, ¿por qué no usar siempre un perfil de Distribución? Se puede implementar en un número ilimitado de dispositivos y aún está adjunto a un certificado propiedad del desarrollador. Otra pieza del rompecabezas de seguridad de Apple son los derechos . En el paquete de una aplicación iOS, encontrará Entitlements.plist, que es una lista de capacidades que una aplicación desea. Al firmar su aplicación utilizando un certificado destinado a la distribución, Xcode (realmente la utilidad de firma) no permitirá un derecho con get-task-allow establecido en YES. Esto se debe a que get-task-allow es lo que permite que un depurador se conecte a un proceso, y Apple no quiere que eso suceda en aplicaciones destinadas a la distribución.
Espero que eso ayude a aclarar cuáles son estas cosas. Ciertamente no diseñé el sistema, por lo que lo que he dicho anteriormente se deriva de mis experiencias con la plataforma.