2 votes

Connexion au serveur domestique via https - fonctionne avec le WiFi, mais pas avec la 3G.

Je rencontre un problème très étrange avec mon téléphone (Alcatel 997D sous Android 4.0.4). Permettez-moi de commencer depuis le début. Je fournis certains services (principalement la synchronisation des données, Firefox et Cal/CardDAV) sur un serveur disposant de clés SSL auto-signées qui est dans mon réseau domestique. Pour assurer la connectivité, j'ai créé un petit trou dans le pare-feu de mon routeur et j'ai un domaine enregistré qui est configuré avec mon adresse IP WAN régulièrement.

Tout fonctionnait bien il y a quelque temps (6 mois, je pense). Mais maintenant, mon téléphone ne peut pas se connecter à mon serveur quand il utilise la connexion 3G (avec toutes les apps de synchronisation, Firefox, apps de synchronisation Cal/CardDAV, Firefox avec mon adresse IP WAN), mais tout fonctionne bien lorsque je me connecte via le WLAN local.

Essentiellement, les seules choses que j'ai changées sont les clés SSL sur mon serveur, et peut-être j'ai installé quelques petites mises à jour Android sur le téléphone. Pour éliminer l'éventualité que le problème provienne du réseau 3G, j'ai créé un autre trou dans le pare-feu de mon routeur et redirigé le trafic vers l'un de mes autres ordinateurs (affichant une petite page web via http). À ma grande surprise, le téléphone pouvait se connecter à la page en 3G.

C'est très dérangeant. Pour exclure que le téléphone soit le problème, je dois encore vérifier la connectivité 3G sur une autre machine, et essayer de me connecter à mon serveur via un WLAN étranger. Mais juste au cas où : Comment puis-je obtenir plus d'informations du côté Android? Toutes les apps fournissent des sorties plus ou moins sans signification.

En faisant des recherches, j'ai découvert qu'il y a plus d'options disponibles pour le débogage, comme l'installation de curl. Je vais faire ça, mais pose quand même cette question dans l'espoir que quelqu'un ait vu quelque chose de similaire, ou puisse me pointer vers une erreur banale de mon côté.


Il y a des erreurs dans le journal système qui indiquent des problèmes de poignée de main SSL sur la connexion 3G. Voici quelques entrées de journal :

[ 08-24 12:30:02.508 19763:0x4d6c E/NativeCrypto ]
Erreur inconnue lors de la poignée de main
[ 08-24 12:30:08.274 19763:0x4d6c E/NativeCrypto ]
Erreur inconnue lors de la poignée de main
[ 08-24 12:30:08.275 19763:0x4d6c W/System.err ]
javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: Abandon de la poignée de main SSL : ssl=0x18e8508: Échec dans la bibliothèque SSL, généralement une erreur de protocole
[ 08-24 12:30:08.275 19763:0x4d6c W/System.err ]
error:140770FC:Fonctions SSL:SSL23_GET_SERVER_HELLO:protocole inconnu (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: Abandon de la poignée de main SSL : ssl=0x18e8508: Échec dans la bibliothèque SSL, généralement une erreur de protocole
[ 08-24 12:30:08.277 19763:0x4d6c W/System.err ]
error:140770FC:Fonctions SSL:SSL23_GET_SERVER_HELLO:protocole inconnu (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 connexion à d'autres pages SSL, par exemple les Add-Ons Mozilla, fonctionne avec la 3G. Je suppose donc qu'il y a quelque chose à propos de mes clés SSL que l'opérateur ou Android n'aiment pas. Je vais faire quelques tests avec d'autres appareils et clés.


J'ai testé le réseau 3G de mon opérateur avec un modem USB mobile attaché à mon Mac, et tout fonctionnait, calendrier, carnet d'adresses, etc (j'ai désactivé Ethernet et WLAN sur le Mac, et l'application fournie par l'opérateur affichait un débit de 1 Mo, et tout était un peu lent). Je pense que cela prouve qu'Android a quelque chose à voir avec ce désordre.


D'accord, quelque chose qui vient de me venir : j'avais une app utilisée pour la synchronisation de calendrier qui ne pouvait plus synchroniser via WLAN après le changement de certificat SSL. Elle a généré une exception qui se plaignait d'une extension critique non supportée ou inconnue. Je pense que c'est la clé pour résoudre le problème.


J'ai changé le certificat de mon serveur et laissé Android faire confiance à l'AC, maintenant je n'ai aucun problème avec les certificats non fiables sur le WLAN, cependant le problème en 3G demeure. J'ai trouvé un lien à ce sujet

SSL23_GET_SERVER_HELLO:protocole inconnu

selon cela, l'erreur:140770FC que j'ai obtenue indiquerait un problème DNS, ce qui expliquerait pourquoi cela se produit uniquement en 3G, mais pas pourquoi cela ne se produit pas sur le Mac.

Pour obtenir un peu plus d'informations, j'ai essayé d'ouvrir l'une de mes pages web avec Chrome. Ça a généré une

Erreur 111 (net::ERR_TUNNEL_CONNECTION_FAILED)

qui était liée à des problèmes SSL ici, mais je ne peux pas confirmer que l'erreur disparaît après un changement vers le port standard. J'ai besoin de meilleurs outils pour une enquête plus approfondie, peut-être je poserai une autre question plus tard.

0 votes

Le dernier bloc donne quelques indices: Abandon du handshake SSL: ssl=0x18e8508: Échec dans la bibliothèque SSL, généralement une erreur de protocole et routines:SSL23_GET_SERVER_HELLO: protocole inconnu, ce qui confirme que votre problème réside dans la partie SSL. Chose étrange, cela ne se produit pas en WiFi. Avez-vous la possibilité d'essayer avec un autre fournisseur 3G? Comme cela ne se produit pas en WiFi, cela doit être quelque chose de leur côté. De plus : Êtes-vous présenté avec un certificat ? Si c'est le cas, je vous recommanderais de regarder de plus près et de le comparer avec ce à quoi vous vous attendiez ici.

0 votes

@Izzy Malheureusement, je n'arrive même pas à l'étape du certificat dans Firefox, il n'y a aucune connexion établie du tout lorsque j'utilise la 3G. Je réalise d'autres tests dans les prochains jours, et je mettrai à jour ma question en fonction de mes découvertes.

0 votes

Simplement me vient à l'esprit: Est-ce que cela pourrait être un problème de "mapping de port" dans le NAT de votre fournisseur? Peut-être que vos expériences devraient inclure la liaison des services à un port différent. L'utilisation d'une autre carte SIM (de préférence d'un autre fournisseur) pourrait également donner des résultats intéressants. Comme vous n'atteignez même pas l'étape du "certificat": Avez-vous vérifié les journaux de vos serveurs, s'il y a des demandes entrantes du tout? Ils pourraient également révéler des détails utiles.

1voto

Chris Craft Points 2705

Comme vous le dites, le problème ne se produit que sur le réseau 3G et non sur le WiFi, cela est probablement dû à un problème avec le Point d'Accès de votre fournisseur de réseau. J'ai eu un problème similaire il y a quelque temps qui était dû au fait que le point d'accès par défaut avait un proxy qui n'autorisait pas le tunnel SSL. Après avoir supprimé le port et le proxy du point d'accès, ce problème a été résolu.

Source: http://lifepluslinux.blogspot.in/2015/07/errtunnelconnectionfailed-on-mobile.html

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X