Tengo un problema muy extraño con mi teléfono (Alcatel 997D con Android 4.0.4). Dejame empezar por el principio. Proporciono ciertos servicios (principalmente cosas de sincronización, Firefox y Cal/CardDAV) en un servidor con claves SSL autofirmadas que se encuentra en mi red doméstica. Para proporcionar conectividad, hice un pequeño agujero en el cortafuegos de mi enrutador y registré un dominio que está configurado en mi dirección IP WAN regularmente.
Todo funcionó bien hace algún tiempo (6 meses, creo). Pero ahora mi teléfono no puede conectarse a mi servidor cuando usa la conexión 3G (con todas las aplicaciones de sincronización, Firefox, aplicaciones de sincronización Cal/CardDAV, Firefox con mi IP WAN como dirección), pero todo funciona bien cuando me conecto a través del WLAN local.
Básicamente, lo único que cambié son las claves SSL en mi servidor, y tal vez instalé algunas pequeñas actualizaciones de Android en el teléfono. Para descartar que sea un problema con la red 3G, hice otro agujero en el firewall de mi enrutador y envié el tráfico a una de mis otras computadoras (mostrando una pequeña página web sobre http). Para mi asombro, el teléfono podía conectarse a la página a través de 3G.
Esto es muy inquietante. Para descartar que el teléfono sea el problema, aún necesito verificar la conectividad 3G en otra máquina e intentar conectarme a mi servidor a través de una WLAN externa.Pero por si acaso: ¿Cómo puedo obtener más información sobre el lado de Android? Todas las aplicaciones proporcionan resultados más o menos sin sentido.
Mientras buscaba en Google, descubrí que hay más opciones disponibles para la depuración, como instalar curl. Haré esto, pero haga esta pregunta de todos modos con la esperanza de que alguien haya visto algo similar, o pueda señalarme un error trivial de mi parte.
Hay errores en el registro del sistema que indican problemas de protocolo de enlace SSL en la conexión 3G. Aquí hay algunas entradas de registro:
[ 08-24 12:30:02.508 19763:0x4d6c E/NativeCrypto ]
Unknown error during handshake
[ 08-24 12:30:08.274 19763:0x4d6c E/NativeCrypto ]
Unknown error during handshake
[ 08-24 12:30:08.275 19763:0x4d6c W/System.err ]
javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x18e8508: Failure in SSL library, usually a protocol error
[ 08-24 12:30:08.275 19763:0x4d6c W/System.err ]
error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:683 0x4027f522:0x00000000)
[ 08-24 12:30:08.276 19763:0x4d6c W/System.err ]
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:460)
[ 08-24 12:30:08.276 19763:0x4d6c W/System.err ]
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:257)
[ 08-24 12:30:08.276 19763:0x4d6c W/System.err ]
at libcore.net.http.HttpConnection.setupSecureSocket(HttpConnection.java:210)
[ 08-24 12:30:08.276 19763:0x4d6c W/System.err ]
at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:486)
[ 08-24 12:30:08.276 19763:0x4d6c W/System.err ]
at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:450)
[ 08-24 12:30:08.276 19763:0x4d6c W/System.err ]
at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
[ 08-24 12:30:08.276 19763:0x4d6c W/System.err ]
at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
[ 08-24 12:30:08.276 19763:0x4d6c W/System.err ]
at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
[ 08-24 12:30:08.276 19763:0x4d6c W/System.err ]
at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:194)
[ 08-24 12:30:08.276 19763:0x4d6c W/System.err ]
at libcore.net.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:280)
[…]
Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x18e8508: Failure in SSL library, usually a protocol error
[ 08-24 12:30:08.277 19763:0x4d6c W/System.err ]
error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:683 0x4027f522:0x00000000)
[ 08-24 12:30:08.278 19763:0x4d6c W/System.err ]
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
[ 08-24 12:30:08.278 19763:0x4d6c W/System.err ]
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:410)
[ 08-24 12:30:08.278 19763:0x4d6c W/System.err ]
La conexión a otras páginas SSL, por ejemplo, Mozilla Add-Ons, funciona con 3G. Así que supongo que hay algo en mis claves SSL que no les gusta a la empresa de telecomunicaciones o a Android. Haré algunas pruebas con otros dispositivos y llaves.
Probé la red 3G de mi proveedor con un módem USB móvil conectado a mi Mac, y todo funcionó, calendario, libreta de direcciones, etc. y todo fue un poco lento). Creo que eso prueba que Android tiene algo que ver con este lío.
Bien, algo que se me acaba de ocurrir: tenía una aplicación utilizada para la sincronización del calendario que ya no podía sincronizarse a través de WLAN después del cambio de certificado SSL. Lanzó una excepción que se quejaba de una extensión crítica no admitida o desconocida. Creo que esa es la clave para resolver el problema.
Cambié el certificado de mi servidor y dejé que Android confiara en la CA, ahora no tengo problemas con los certificados no autorizados a través de WLAN, sin embargo, el problema de 3G persiste. Desenterré esto sobre
SSL23_GET_SERVER_HELLO:unknown protocol
de acuerdo con esto, el error: 140770FC que obtuve apuntaría a un problema de DNS, lo que explicaría por qué sucede solo en 3G, pero no por qué no sucede en la Mac.
Para recopilar un poco más de información, intenté abrir una de mis páginas web con Chrome. Emitió un
Error 111 (net::ERR_TUNNEL_CONNECTION_FAILED)
que estaba conectado a problemas de SSL aquí , pero no puedo reconocer que el error desaparece después de cambiar al puerto estándar. Necesito mejores herramientas para una mayor investigación, tal vez haga otra pregunta más tarde.
Como usted dice que el problema existe solo en 3G y no en WiFi, probablemente se deba a algún problema con el punto de acceso de su proveedor de red. Enfrenté un problema similar en algún momento porque el punto de acceso predeterminado tenía un proxy que no permitía el túnel SSL. Después de eliminar el puerto y el proxy del punto de acceso, este problema se resolvió.
Fuente: http://lifepluslinux.blogspot.in/2015/07/errtunnelconnectionfailed-on-mobile.html
izzy
SSL handshake aborted: ssl=0x18e8508: Failure in SSL library, usually a protocol error
yroutines:SSL23_GET_SERVER_HELLO:unknown protocol
, lo que confirma que su problema radica en la parte de SSL. Lo raro es que esto no suceda en WiFi. ¿Tienes la oportunidad de probar con otro proveedor de 3G? Como no sucede en WiFi, debe ser algo de su parte. Además: ¿Se le presenta un certificado? Si es así, lo miraría más de cerca y lo compararía con lo que esperaría aquí.Percival Ulises
izzy
Percival Ulises