2 votos

¿Cómo puedo importar correctamente una CA de usuario para la aplicación de correo electrónico?

Para mi propia configuración utilizo una CA personal: "Gert van Dijk CA". Estoy utilizando esto para HTTPS y VPN con éxito mediante la importación del certificado de CA en el almacén de claves de Android. Tengo problemas para que la aplicación de correo electrónico lo reconozca. Aquí hay algunas notas sobre la configuración actual:

  • La CA personalizada aparece perfectamente en Ajustes -> Seguridad -> Credenciales de confianza -> Usuario .
  • Chrome y "OpenVPN para Android" funcionan con esta CA personalizada. Puedo ver una barra de ubicación verde cuando se conecta a https://mail.mydomain.tld .

Todo esto parece bien, hasta que llego a la configuración de mi correo Exchange. Simplemente no se conecta a mail.mydomain.tld con el error "No se ha podido abrir la conexión con el servidor". Sin embargo, cuando cambio "Security Type: SSL/TLS" a "SSL/TLS (Aceptar todos los certificados)", mi correo se sincroniza perfectamente. Esto me hace pensar que la aplicación de correo electrónico no tiene en cuenta las credenciales del usuario en el almacén de claves. ¿Por qué?

Logcat me muestra esta línea al recibir el error de conexión:

I/Exchange(10278): IOException while sending request: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

Para verificar que he configurado mi servidor Exchange correctamente, he navegado hasta https://mail.mydomain.tld/Microsoft-Server-ActiveSync ¡y la barra de localización es perfectamente verde!

¿Cómo puedo hacer que la aplicación de correo electrónico tenga en cuenta las credenciales de confianza del usuario? No quiero confiar en todos los certificados posibles por razones de seguridad.

Versiones de Android: 4.4 (Nexus 5), 4.3 (Nexus 7 2013).

0voto

gertvdijk Puntos 513

Ah, bueno. Parece que la aplicación Stock Email no hace SNI . Esto significa que en la conexión inicial al servidor se le presentó otro certificado que debería descartar (pero no lo hizo). Me parece que esta es una petición de funcionalidad para la app de Email, ya que otras apps sí implementan SNI.

Cambiar la configuración SSL de Apache para utilizar SNI con un certificado inicial firmado con la "Gert van Dijk CA" seguía sin solucionarlo. Logcat mostró entonces:

I/Exchange(12307): IOException while sending request: Cannot verify hostname: mail.mydomain.tld

Configuración mail.mydomain.tld como certificado inicial lo resolvió. Lo considero una mala solución hasta que se solucione en la aplicación de correo electrónico.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X