iOS 11 y 12 certificados instalados no confiables automáticamente (autofirmado)

En nuestra red interna, utilizamos un certificado CA autofirmado. Esto ha funcionado bien durante años, tanto en Safari como en nuestro producto iOS, hasta iOS 10. Simplemente instalamos el certificado CA en cualquier dispositivo o simulador nuevo y todo funciona, incluso con ATS. Esto permite el acceso a todos nuestros servidores de prueba internos sin tener que confiar en cada servidor individualmente.

A partir de iOS 11, el certificado de CA instalado ya no permite que Safari o nuestra aplicación confíen en el certificado de ninguno de los servidores. Recibimos los siguientes detalles relevantes conCFNETWORK_DIAGNOSTICS habilitado para nuestra aplicación:

Dominio de error = kCFErrorDomainCFNetwork Code =-1200
_kCFNetworkCFStreamSSLErrorOriginalValue =-9802
_kCFStreamErrorDomainKey =3
_kCFStreamErrorCodeKey =-9802
NSLocalizedDescription = Se produjo un error SSL y no se puede establecer una conexión segura con el servidor.
NSLocalizedRecoverySuggestion = ¿Desea conectarse al servidor de todos modos?

Pasé un tiempo considerable tratando de resolver este problema, rastreando StackOverflow y el resto de la web. Aunque usamos AFNetworking en nuestra aplicación, eso parece ser irrelevante, ya que Safari ya no confía en estos servidores a través de CA. Desactivar ATS a través deNSAllowsArbitraryLoads permite el acceso a los servidores, pero obviamente no es una solución.

No se han realizado cambios en nuestro-URLSession:didReceiveChallenge:completionHandler código, y tenemos una implementación adecuada (trabajada durante años) de la respuesta al desafío a través dechallenge.protectionSpace.serverTrust.

He reevaluado y probado los certificados de CA y de servidor de todas las formas posibles, y funcionan en todas partes, excepto iOS 11. ¿Qué podría haber cambiado en ATS para iOS 11 que podría causar este problema?

Respuestas a la pregunta(6)

Su respuesta a la pregunta