Usando NSURLRequest, estoy intentando acceder a un sitio web que tiene un certificado caducado. Cuando envío de la solicitud, mi conexión : didFailWithError método delegado se invoca con la siguiente información:Objective-C/Cocoa: ¿Cómo acepto un certificado de servidor incorrecto?
-1203, NSURLErrorDomain, bad server certificate
Mis búsquedas sólo han aparecido una solución: un método de clase oculta en NSURLRequest:
[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:myHost];
Sin embargo, no quiero usar API privadas en una aplicación de producción por razones obvias.
¿Alguna sugerencia sobre qué hacer? ¿Debo utilizar las API de CFNetwork? De ser así, dos preguntas:
- ¿Algún código de muestra que pueda usar para comenzar? No he encontrado ninguno en línea.
- Si utilizo CFNetwork para esto, ¿debo abandonar NSURL por completo?
EDIT:
iPhone OS 3.0 introdujo un método admitido para hacer esto. Más detalles aquí: How to use NSURLConnection to connect with SSL for an untrusted cert?
El sitio en cuestión es en nuestro entorno de pruebas, sólo se puede acceder internamente. Supongo que los administradores de red son demasiado baratos o perezosos para mantener certificados válidos para ello. Nuestro entorno de producción tiene un certificado válido, por supuesto. Como esta característica de esquivar certificados no se habilitaría o necesitaría en producción, podría usar la API privada solo para probar. Todavía preferiría hacerlo de la manera "correcta", ya que estaría de regreso en la casilla uno si alguna vez extrajeran la API privada. –