¿Cómo importo 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 usando esto para HTTPS y VPN con éxito al importar el certificado de CA al almacén de claves de Android. Tengo problemas para que la aplicación de correo electrónico reconozca esto. Aquí hay algunas notas sobre la configuración actual:

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

Todo esto se ve bien, hasta que llego a configurar mi correo de Exchange. Simplemente no se conectará mail.mydomain.tldcon el error "No se pudo abrir la conexión al servidor". Sin embargo, cuando cambio "Tipo de seguridad: SSL/TLS" a "SSL/TLS (Aceptar todos los certificados)", ¡sincronizará mi correo perfectamente! Esto me hace creer que la aplicación de correo electrónico estándar no tiene en cuenta las credenciales de usuario en el almacén de claves. ¿Por qué?

Logcat me muestra esta línea cuando recibe 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 configuré mi servidor de Exchange correctamente, navegué https://mail.mydomain.tld/Microsoft-Server-ActiveSyncy la barra de ubicación está perfectamente verde.

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

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

Respuestas (1)

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 solicitud de función para la aplicación de correo electrónico, ya que otras aplicaciones implementan SNI.

Cambiar la configuración de Apache SSL para usar SNI con un certificado inicial firmado con "Gert van Dijk CA" aún no lo resolvió. Logcat luego mostró:

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

Establecer mail.mydomain.tldcomo certificado inicial lo resolvió. Considero que esto es un trabajo feo hasta que se solucione en la aplicación de correo electrónico.