HTTPS con NSURLConnection – NSURLErrorServerCertificateUntrusted

Tengo una aplicación que se conecta bien a través de http. Al intentar https obtuve el error que dice que el certificado raíz no es de confianza. Encontré las URL para mi certificado de sitio, su certificado de CA y el certificado raíz de la CA y los he agregado a través de Safari al teléfono. Ahora, cuando voy a Preferencias -> General -> Perfiles, puedo ver todos mis certificados que recorren toda la cadena. Hay una etiqueta roja sin firmar en cada certificado. Aún cuando me conecto obtengo el error NSURLErrorServerCertificateUntrusted. Intento averiguar a dónde ir después.

Cualquier ayuda sería genial. La única otra cosa que puede afectar esto, es que me estoy conectando a un puerto impar. Entonces mi url es www.domain.com:port. ¿El número de puerto crea un certificado – el nombre de dominio no coincide?

Ahora he usado la herramienta de configuración de iPhone para agregar un perfil de configuración al teléfono. Tiene mi certificado raíz, certificado CA y certificado del sitio. El perfil en el teléfono dice que está verificado. En los detalles, puedo ver mis tres certificados. Pero cuando bash conectarme, sigo recibiendo el error de certificado que no es de confianza. ¿Alguna sugerencia?

¿Estoy tratando de ver si alguien más puede ayudarme con esto?

Hay una API compatible para ignorar los certificados incorrectos durante las cargas de NSURLConnection. Para hacerlo, simplemente agregue algo como esto a su delegado de NSURLConnection:

- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace { return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]; } - (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) if (... user allows connection despite bad certificate ...) [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge]; [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge]; } 

Tenga en cuenta que conexión: didReceiveAuthenticationChallenge: puede enviar su mensaje a challenge.sender (mucho) más tarde, después de presentar un cuadro de diálogo al usuario si es necesario, etc.