2012-09-27 22 views
6

Actualmente estamos desarrollando una aplicación móvil usando Cordova/PhoneGap (última versión) para Android y iOS. Uno de los aspectos clave de nuestra aplicación es que recupera datos de diferentes fuentes remotas (una de las cuales tiene un certificado SSL no válido). Después de asegurarnos de que todas las configuraciones .plist están configuradas correctamente (para la lista blanca del dominio), nuestra aplicación no funciona en iOS 5 ni en 6. No se muestran errores en la consola en XCode o Safari; simplemente muere. La aplicación de Android funciona bien y funciona localmente en los navegadores web. Por lo tanto, un par de preguntas:Cordova/PhoneGap iOS HTTPS/SSL issues

¿Existe una configuración de .plist para ignorar los certificados SSL no válidos en iOS? Vi un código para hacer eso en UIWebView, pero no estamos seguros si deberíamos modificar ese código y arriesgarnos a romper la aplicación en otro lugar.

Respuesta

6

** Editar 13/03/14 **

El método recomendado es instalar la entidad emisora ​​de su dispositivo: un correo electrónico su CA a su dispositivo, puntee en el archivo CA en el correo electrónico, y la importación en su área de almacenamiento seguro. Esto permitirá que su dispositivo confíe en la conexión https sin firmar sin necesidad de las líneas de código que se muestran a continuación.

Tenga en cuenta que si bien la siguiente solución funcionará, no es segura y no es recomendable. Debe eliminar estas líneas de código antes de lanzar una versión de producción de la aplicación. De lo contrario, la aplicación quedará insegura. Esta solución no se recomienda porque las personas pueden olvidarse de eliminar esto.

** Respuesta original **

No hay ajuste de Córdoba plist para esto. Para solucionar esto en iOS, añada el código que se muestra a continuación al final de su archivo AppDelegate.m.

@implementation NSURLRequest(DataController) 
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host 
{ 
    return YES; 
} 
@end 

He utilizado esto en varios proyectos en el pasado y no he visto ningún efecto secundario adverso.

El archivo AppDelegate.m se puede encontrar en la carpeta de color amarillo titulada Clases en su proyecto de Xcode.

+0

¡Te sugiero que edites tu respuesta para llevar la última parte a la cima! Esta es la mejor solución: _ "envíe por correo electrónico su CA a su dispositivo, toque el archivo CA en el correo electrónico e impórtelo a su área de almacenamiento seguro" _. Sin embargo, no lo envié por correo electrónico, lo descargué de mi máquina de desarrollo usando http. – pauloya

+0

@PauloManuelSantos hecho – njtman

+0

¿Qué tal si agregamos una configuración definida por el usuario basada en su configuración de compilación/destino para devolver Sí/No? De esa manera no tienes que recordar eliminar el código cuando estés listo para lanzarlo ... – ganders