verificar quitar perfiles instalar configurator confianza confiable certificado apple ios ssl uiwebview

quitar - trust store ios



Permitir certificado SSL no verificado en UIWebview (7)

En iOS 9, las conexiones SSL fallarán para todos los certificados no válidos o autofirmados. Este es el comportamiento predeterminado de la nueva característica de seguridad de transporte de aplicaciones en iOS 9.0 o posterior, y en OS X 10.11 y posterior.

Puede anular este comportamiento en Info.plist , estableciendo NSAllowsArbitraryLoads en YES en el diccionario NSAppTransportSecurity . Sin embargo, recomiendo anular esta configuración solo para fines de prueba.

Para obtener información, consulte la técnica de transporte de aplicaciones here .

Incrustaré un sitio web en UIWebView. Durante el desarrollo lo he apuntado a localhost. El problema es que cada vez que toca una url "https: //" no se carga. Cuando cargo la url en el safari móvil obtengo esta ventana emergente:

¿Hay alguna manera de anular esto con UIWebView para permitir la url no verificada?


Hay una manera de hacer esto legalmente (al menos por las leyes de la tienda de aplicaciones). Cuando utiliza NSURLConnection, hay dos métodos que se pueden usar para permitir el uso de certificados SSL autofirmados:

¿Cómo usar NSURLConnection para conectarse con SSL para un certificado que no es de confianza?

Si implementa UIWebViewDelegate use el

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

Devuelve NO a esto para que WebView no se cargue por sí mismo. Luego construya una NSURLConnection (que se puede usar con certificados sin firmar a través del enlace de arriba).

Por supuesto, las recomendaciones SSL habituales se aplican aquí:
- ¡No use un certificado sin firmar en los servidores de producción!
-Siempre aparece una advertencia para que su usuario decida si acepta el certificado o no.


La respuesta de Nick evitará que su aplicación sea aceptada por Apple en App Store y la respuesta de George no podrá cargar el resto de una página que tenga .css o .js o cualquier otra descarga secundaria. Aquí hay una respuesta completa que permite a UIWebView cargar páginas de un sitio con un certificado que no es de confianza.


Sé que es un poco tarde, pero puede ayudar a otros, encontré un artículo para eludir SSL en la aplicación iOS. Todo lo que necesitas hacer es configurar tu vista web y hacer una solicitud posterior desde la aplicación a tu servidor y si recibes un error SSL que significa que no tiene un certificado válido en su servidor. Para omitir, debe usar los delegados de webview que son 1.) Puede autenticarse contra el espacio de protección 2.) Debe comenzar la carga con la solicitud 3.) ¿Recibió el desafío de autenticación? Puede copiar estos funcionan desde esta URL , para mí funciona bastante bien. Espero eso ayude


Si solo es para probar durante el desarrollo, puede crear una categoría en NSURLRequest y anular el siguiente método privado:

#if DEBUG @implementation NSURLRequest (NSURLRequestWithIgnoreSSL) + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host { return YES; } @end #endif

Simplemente coloque esto en cualquier lugar en uno de sus archivos .m (por ejemplo, delegado de aplicaciones), o póngalo en su propio archivo .m. No necesita un archivo de encabezado coincidente.

El #if DEBUG es una precaución para evitar que lo deje habilitado accidentalmente cuando lo envíe a Apple, pero si necesita que funcione en una versión de lanzamiento, elimínelo (y asegúrese de recordar restaurarlo o eliminar esta categoría antes que usted) enviar a Apple).


Swift 3/4 versión para Nick Lockwood respuesta.

Esto es solo para fines de prueba / desarrollo:

extension NSURLRequest { #if DEBUG static func allowsAnyHTTPSCertificate(forHost host: String) -> Bool { return true } #endif }


Usando los dos métodos siguientes, podemos permitir que ssl no verificada en UIWebview

-(BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace; -(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;

He respondido en detalle cómo lograr esto here