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:
https://mail.mydomain.tld
.Todo esto se ve bien, hasta que llego a configurar mi correo de Exchange. Simplemente no se conectará mail.mydomain.tld
con 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-ActiveSync
y 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).
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.tld
como certificado inicial lo resolvió. Considero que esto es un trabajo feo hasta que se solucione en la aplicación de correo electrónico.