2009-08-22 23 views
10

Estoy usando my iPhone application en mi iPhone 3G OS 3.0.1 sin ningún problema. La aplicación se conecta a una URL de API al https://api.serverdensity.com/1.0/ y todas las solicitudes se procesan.Error "No se confía el certificado del servidor" en la aplicación de iPhone

Un usuario de la aplicación ha informado que ahora recibe de repente un error "certificado de servidor que no es de confianza". Ningún otro usuario está experimentando este problema (que yo sepa) y no puedo reproducirlo.

El certificado SSL es un certificado comodín en * .serverdensity.com. Se adquiere de GoDaddy y es válida hasta mayo de 2010.

Además, el usuario ejecuta el sistema operativo 3.0.1, la fecha y la hora están configuradas correctamente en el dispositivo y si visita la URL de la API en Safari, carga correctamente.

¿Alguna sugerencia para la causa de esto?

Respuesta

2

previamente Estábamos usando un método "codificado" de autenticación utilizando AUTH básica HTTP cuando se conecta a nuestra API:

NSString *requestURL = [NSString stringWithFormat:@"https://%@:%@@api.serverdensity.com/1.0/?account=%@.serverdensity.com&c=%@", username, password, account, command]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:requestURL] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 

pero cambió a usar una método "correcto" en nuestra última actualización:

NSString *requestURL = [NSString stringWithFormat:@"https://api.serverdensity.com/1.0/?account=%@.serverdensity.com&c=%@", account, command]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:requestURL] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0]; 

usando NSURLCredential a manejar correctamente la autenticación HTTP. Después de esta actualización, el error del certificado desapareció para el usuario afectado.

6

¡Tuve el mismo problema!

¿Ha instalado allí el "Certificado intermedio Bundle"? Si no lo hace, obtendrá el certificado de servidor que no es de confianza en todas las plataformas móviles (y también en algunas de las PC).

Web Site Cita:

Antes de instalar el certificado SSL emitido debe descargar e instalar nuestro paquete certificado intermedio en el servidor Web. También puede descargar el paquete desde el repositorio.

Consulte el GoDaddy SSL install instructions para la configuración de su servidor web.

El paquete de certificado intermedio se puede encontrar en here.

+0

bien, pero si ese era el problema siempre debería suceder. Parece que esto es intermitente. – frankodwyer

+0

Cuando sucedió conmigo, fue extraño. Estaba funcionando y dejó de funcionar después de una fecha determinada. Así que no fue intermitente para mí, pero pasó de funcionar a no funcionar sin una razón real notable. –

+1

Sí, instalé el paquete y, en realidad, publiqué en el blog sobre él también - http://blog.boxedice.com/2009/05/11/godaddy-ssl-certificates-and-cannot-verify-identity-on-macsafari/. Sin embargo, si este era el problema, también esperaría ver el error en los navegadores. – DavidM

2

En realidad, he visto esto con mi propia aplicación que también usa un certificado godaddy, y sí, he instalado los certificados intermedios en mi servidor.

Es raro, pero esto puede suceder si el usuario va a un punto de acceso wifi que interpone su página de inicio de sesión al intento de conexión. En realidad, se trata de un comportamiento correcto para SSL, y es causado por el hecho de que el hotspot realiza de manera efectiva una redirección de hombre en el medio para su URL.

Pueden solucionarlo yendo primero a Safari y haciendo que la conexión funcione.

OS3.0 se supone que debe hacer un inicio de sesión automático a este tipo de zona activa, pero en mi experiencia, no siempre funciona.

editar: para agregar, antes de usar SSL solía detectar esto para http simple y poner un mensaje de error apropiado. Probablemente sea aconsejable detectar este error en su aplicación y mostrar un mensaje similar "puede estar conectado a un punto de acceso que requiere que inicie sesión", etc. Ahora que me lo recuerda, tengo que hacerlo en mi propio aplicación

+0

El usuario dice que ha intentado con redes wifi y redes de datos móviles con el mismo error. Él también ha vuelto a instalar la aplicación. – DavidM

+0

Es realmente extraño que funcione en Safari pero no en tu cliente. ¿Estás utilizando la carga de URL estándar y qué política de caché usas? ¿Ha intentado el usuario borrar el caché de Safari? – frankodwyer

+0

Esta es una sugerencia realmente útil ya que la mayoría de las aplicaciones que se conectan a una API a través de HTTPS encontrarán este problema. –

0

Vi el mismo mensaje de error en un teléfono de prueba jailbroken que tenía, pero no en mis otros teléfonos de prueba. Nunca lo investigué más, pero pensé que mencionaría en caso de que ayude ...

4

Verifique la configuración de fecha y hora de su iPhone o iPod, si tiene el error que dice "certificado de servidor que no es de confianza".

Después de corregir la fecha y la hora desde iPhone/iPod "Configuración". Automáticamente se ocupará de todas las aplicaciones (por ejemplo, Yahoo Messenger, Citrix, Push mail, etc.) se encuentra con el problema "Certificado de servidor no de confianza". Solo dale un intento. Espero que sea un poco de ayuda para ti. Gracias.

+0

Funcionó como un amuleto. ¡Gracias! – johnnieb

0

Confirmo que su teléfono puede cargar cualquier URL https: // sin previo aviso. Tengo un iPhone antiguo 3.1.3 que por alguna razón advierte sobre cada certificado que encuentra. No estoy seguro de cuál es el motivo, pero lo hace casi inútil para las pruebas de mi servicio web.

3

Los primeros dispositivos con iOS y Android incluían una base de datos de certificados de raíz más pequeña que el navegador de escritorio. Debe concatenar los certificados CA intermedios con su certificado de servidor y hacer que el servidor web los envíe todos al teléfono. Más tarde iOS y versiones de Android solucionan esto al incluir más certificaciones de ca en el dispositivo.

Cuestiones relacionadas