Pido disculpas de antemano por la pregunta prolija. Tengo problemas con un certificado SSL autofirmado y quiero documentar todo lo que he intentado hasta ahora.Utilice un certificado ssl autofirmado en una aplicación para iphone
Estoy trabajando en una aplicación que se comunica con un servicio REST. El servidor de prueba utiliza un certificado SSL autofirmado que puedo instalar en mi computadora sin problemas. Es un archivo .p12 que requiere una contraseña para instalar. Sin este certificado instalado, todas las peticiones al servidor devuelven un 403.
El p.12 instala tres artículos en el llavero, una "autoridad de certificación raíz", un certificado de "usuario de prueba" que se emite por la "autoridad de certificación raíz" y una clave privada que está asociada con el certificado "usuario de prueba".
He instalado este certificado en mi iPad enviándome el archivo .p12. Hice tapping en el archivo adjunto, ingresé la contraseña y ahora puedo acceder al sitio en Safari. Desafortunadamente, debido a la zona de pruebas de aplicaciones, esto no es suficiente para que mi aplicación se comunique con el servicio REST.
Estoy usando ASIHTTPRequest para toda la comunicación con el servicio REST desde mi aplicación. Cada solicitud es una subclase de ASIHTTPRequest. Lo primero que tuve que hacer fue llamar al [self setValidatesSecureCertificate:NO];
para que incluso intentara la conexión SSL al servidor. Si eso es todo lo que hago, recibo 403 códigos de error del servicio.
Ahora no puedo encontrar la manera de obtener la solicitud para usar el certificado. He intentado exportar los tres puntos como archivo .cer separada, incluyéndolas en el proyecto y agregarlos a la solicitud utilizando el código de abajo:
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"cert" ofType:@"cer"]];
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (CFDataRef)data);
...
[self setClientCertificates:[NSArray arrayWithObjects:(id)cert, ..., nil]];
Mientras que el código se ejecuta sin ningún problema con este enfoque, sigo teniendo el error 403
Incluso he intentado incluir el archivo .p12 en mi aplicación e importarlo con el mismo código. Esto falla porque SecCertificateCreateWithData
devuelve nil.
Admito que no se sabe muy bien lo que estoy haciendo aquí. Todo esto está un poco sobre mi cabeza y cualquier ayuda que alguien pueda darme sería muy apreciada.
El enlace está roto, supongo que debería ser éste: https://developer.apple.com/library/content/documentation/Security/Conceptual/CertKeyTrustProgGuide/index.html – Oriol