Para aquellos de ustedes que quieren un contexto más sobre por qué sucede esto, además de cómo solucionarlo, lea a continuación.
Con la introducción de iOS 9, para mejorar la seguridad de las conexiones entre una aplicación y los servicios web, las conexiones seguras entre una aplicación y su servicio web deben seguir las mejores prácticas . App Security Security impone el comportamiento de las mejores prácticas para:
- evitar la divulgación accidental, y
- proporcionar un comportamiento predeterminado que sea seguro.
Como se explica en la Nota técnica de App Transport Security , cuando se comunica con su servicio web, App Transport Security ahora tiene los siguientes requisitos y comportamientos:
- El servidor debe admitir al menos la versión 1.2 del protocolo de Seguridad de la capa de transporte (TLS).
- Los cifrados de conexión están limitados a aquellos que brindan confidencialidad directa (consulte la lista de cifrados a continuación).
- Los certificados deben firmarse utilizando un algoritmo de hash de firma SHA256 o mejor, con una clave RSA de 2048 bits o más o una clave de curva elíptica (ECC) de 256 bits o más.
- Los certificados no válidos provocan un fallo grave y no hay conexión.
En otras palabras, su solicitud de servicio web debe: a.) Usar HTTPS y b.) Estar encriptada usando TLS v1.2 con confidencialidad.
Sin embargo, como se mencionó en otras publicaciones, puede anular este nuevo comportamiento de App Transport Security especificando el dominio inseguro en la Info.plist
aplicación.
Para anular, deberá agregar las NSAppTransportSecurity
> NSExceptionDomains
propiedades del diccionario a su Info.plist
. A continuación, agregará el dominio de su servicio web al NSExceptionDomains
diccionario.
Por ejemplo, si deseo omitir el comportamiento de Seguridad de transporte de aplicaciones para un servicio web en el host www.yourwebservicehost.com, entonces haría lo siguiente:
Abre tu aplicación en Xcode.
Busque el Info.plist
archivo en Project Navigator y haga clic con el botón derecho del mouse en él y elija la opción de menú Abrir como > Código fuente . El archivo de la lista de propiedades aparecerá en el panel derecho.
Coloque el siguiente bloque de propiedades dentro del diccionario de propiedades principal (debajo del primero <dict>
).
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>www.example.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
Si necesita proporcionar excepciones para dominios adicionales, entonces agregaría otra propiedad de diccionario debajo NSExceptionDomains
.
Para obtener más información sobre las claves mencionadas anteriormente, lea esta nota técnica ya mencionada .