Voy a explicar en este post lo que he sido un quebradero de cabeza hasta dar en el clavo: el farragoso proceso para obtener los dichosos certificados de Apple para desarrollo y distribución de aplicaciones iOS.

Antes que nada comentar que si o si y más temprano que tarde hay que pasar por caja con Apple y pagar los hasta hoy 99$ que cuesta darse de alta como desarrollador. Olvidate de lo que hayas podido leer por ahí, si quieres subir aplicaciones iOS a la Apple Store tienes que pagar. Y otra cosa no menos importante, ¡Necesitaras un Mac! (hay en Internet manuales de como sacar los certificados con Windows, si es complicado con un Mac no quiero ni pensarlo con Windows).

Una vez que te hayas dado de alta, accedemos a Certificates, ID &Profiles.

Al entrar tenemos en el menú a la izquierda con las opciones que vamos a usar: Certificates (certificados), Identifiers (Identificadores, donde registramos nuestras apps), Devices (dispositivos, para registrar nuestros dispositivos) y Provisioning Profiles (Perfiles de aprovisionamiento).

¿Que necesitamos?

  • Certificado de Development (desarrollo) o de Production (producción).
  • Crear la Apps Ids, donde registramos nuestra app.
  • Certificado APNs Development iOS, o Certificado Apple Push Services, si queremos usar algun servicio de notificaciones Push.
  • Provisioning Profile, de desarrollo o de producción.

¿Por qué necesitas Certificados?

Como Desarrollador de Apple (Apple Developer), cuando creas un proyecto necesitas firmarlo con un Certificado de Distribución ó Distribution Certificate. Este certificado te autentifica como el creador de la app. Es por ese motivo, que tu nombre (si te has registrado como individual) o el de tu empresa (si te has registrado como una organización) aparecerá como «Vendedor» de la app dentro de la App Store.

Con tu cuenta de desarrollador puedes publicar varias apps. Puedes emplear el mismo Certificado de Distribución para éstas.

Lo que identifica a cada apicación como única es lo que se denomina App IDs. Si quieres habilitar las notificaciones push dentro de tu app, cuando estés configurando el App IDs recuerdo habilitar la casilla «Push notifications» antes de acabar y validar el proceso de registro.

La creación del Provisioning Profile es otro paso obligatorio. Será el link entre tú, como desarrollar de app y tu proyecto (un App IDs). Necesitarás el Provisioning Profile tanto para el Ad Hoc (Distribution – AdHoc) como para el App Store distribution.

Y por último: el Push SSL Certificate. Está ligado a un App IDs específico y es la conexión entre el App IDs y los servidores de envío.

Vayamos por partes.

Antes de poder crear el certificado en el panel de desarrollador de Apple necesitas crear un archivo CSR en el ordenador Mac que servirá para identificarte como persona. Para ello, abre el llavero (keychan) de mac y en el menú “Acceso Llaveros” selecciona la opción para “Solicitar un certificado de una autoridad de certificación”.

 

Este proceso creará un archivo llamado CertificateSigningRequest.certSigningRequest, guárdalo en lugar seguro pues solo es necesario hacerlo una única vez y sirve para todos los certificados que saquemos.

1 – Certificado de Desarrollo y Producción

Ahora nos sacaremos los certificados de Development y de Production.

En Certificates -> All veremos todos los que ya tenemos. Dando la botón “+” podremos añadir:

Para desarrollo (Development) seleccionamos iOS App Development, y para producción (Production) seleccionamos App Store and Ad Hoc. Esto lo haremos de uno en uno y en ambos casos es exactamente igual.

Una vez que hemos seleccionado el tipo de certificado damos a “Continue” y nos advertirá de la necesidad del archivo CSR que ya hemos hecho:

Otra vez al botón “Continue” y nos pedirá subir el archivo CSR:

Lo subimos y ya tendremos nuestro certificado listo para descargar

Estos certificados los podemos descargar en el momento o cuando lo necesitemos.

 

2 – Crear la App IDs

La App IDs identifica la aplicación que vamos a desarrollar en Apple.

Antes de hacer esto es conveniente, si vas a hacer pruebas con tus dispositivos iOS, crear una lista de los mismos para poder instalar las aplicaciones en modo de prueba.

Vamos al menú Devices -> All,

Damos al botón “+” para añadir un dispositivo:

En Name ponemos el nombre que queramos dar a nuestro dispositivo (ej. Mi iPhone 5) y ponemos también la UDID (esto lo podemos sacar conectando el dispositivo con iTunes) y damos al botón “Continue”. De esta manera añadimos el dispositivo para poder instalar la aplicación en él. Podemos añadir todos los dispositivos que queramos.

Ahora vamos a crear la App IDs, en mi caso voy a crear una aplicación para hacer pruebas de diversos tipos así que vamos al menú Identifiers -> App IDs:

En mi caso he utilizado como id: com.manuelsanchez.test

Dentro de los Servicios de Apple he marcado Push Notifications porque haré pruebas de notificaciones también y deseo que la app pueda recibir notificaciones.

Damos al botón “Continue” y posteriormente al botón “Register”

Ya está registrada nuestra aplicación, damos al botón “Done”.

Si habéis estado atento habréis visto que en los Servicios de Apple, Push Notifications estaba en color naranja. Eso significa que aunque la app pueda recibir notificaciones no está lista para ello pues necesitamos generar un Certificado Apple Push Services.

Así que dentro de App IDs hacemos clic en nuestra app.

Damos al botón “Edit”.

Como podemos ver, necesitamos generar un certificado de Desarrollo o de Producción.

En mi caso, como solo voy a realizar pruebas en mis dispositivos elijo Decelopment SSL certificate y doy al botón “Create Certificate”.

Al igual que cuando creamos el certificado de desarrollador nos pedirá el archivo CSR.

Lo subimos y tendremos el certificado listo:

Ahora, con este certificado, mi aplicación estaría lista para recibir notificaciones push.

Si quisiéramos que esta aplicación estuviese en la Apple Store y necesitase de recibir notificaciones, la editaríamos y crearíamos el certificado Production SSL Certificate:

Se haría de la misma forma que el anterior.

 

3 – iOS Provisioning Profiles

Recordemos que el “developer certificate” es un documento, una especie de DNI, que te identifica de forma inequívoca. Bien, pues un provisioning profile es una especie de billetera, donde llevas ese documento y otros más. Es decir, se trata de un conjunto de documentos.

¿Qué tipo de documentos?

Un “provisioning profile” lleva 3 tipos de documentos:

  • Uno o más “developer certificates”
  • Uno o más identificadores de dispositivo.
  • Un identificador de App

Los identificadores de dispositivo, como ya te lo podrías imaginar, identifican de forma inequívoca a un dispositivo (iPhone o iPad).

Los identificadores de App hacen lo mismo pero para las Apps.

Así que sin más dilación vamos al menu Provisionig Profiles -> All y damos al botón “+”

En mi caso voy a usar iOS App Development, damos a “Continue”.

Seleccionamos la App ID,

Seleccionamos nuestro certificado,

Y por último los dispositivos donde correrá nuestra app de pruebas.

Damos un nombre al archivo

Y ya está listo para descargar.

Si quisiéramos uno para producción repetiríamos los pasos anteriores y nos pedirá lo mismo a excepción de los dispositivos autorizados.

Hasta aquí hemos resuelto el primer quebradero de cabeza pero esto no termina así.

Desde la web de Apple podremos descargar todos estos certificados que no son más que archivos .CER, los cuales tendrás que instalar en tu llavero del mac para exportarlos como .P12 y para subirlos a la web con que implementes las notificaciones o con la que hagas los paquetes de las aplicaciones.

Para generar el archivo P12 basta con hacer doble clic en el .CER que te has descargado. Este se añade automaticamente a tu llabero del mac:

 

Seleccionamos el certificado que se acaba de añadir y vamos a Archivo -> Exportar item

Lo guardo como Test-ios-development.p12

De igual manera puedo exportar a P12 cualquier certificado CER.

 

Certificado PEM

Si vas a implementar un servidor propio para notificaciones push con PHP necesitaras generar un certificado PEM.

En mi caso tengo en la Carpeta Certifocados el archivo Test-ios-development.p12 que generé anteriormente y es el que necesito convertir a PEM.

Abrimos terminal en la carpeta Certificados y escribimos:

openssl pkcs12 -in Test-ios-development.p12 -out test.pem -nodes -clcerts

Nos pedirá la clave con que se guardó y listo

Test-ios-development.p12: es el certificado para notificaciones que descargué de mi llavero.

test.pem: es el archivo PEM para utilizar con PHP.

 

Y aquí termino todo este tocho que espero sirva a alguien . . . .