The standard Android applications for mail, calendar, contacts etc. can synchronize against SSL-protected servers but have no option to check their certificate. Basically, it is possible to either check if the certificate is issued by one of the standard (before Android 4.0, not user-editable) CAs, or not check them at all. This is not enough to reliably assert the identity of the server, which presents the risk of giving sensitive information (account passwords) to the wrong server. This problem is especially important when the server is on a semi-permament connection and found via dynamic DNS, uses self-signed or private-CA certificates, or when using public WiFi hotspots (which are rather trivial to fake and therefore are a regular MitM-attack vector).
This app checks in configurable intervals if a given HTTPS URL is reachable and the server identifies itself with the right certificate. It consists of a home screen widget displaying the status with colored "signal lights":
* green, if the connection is okay
* yellow, when a check is underway
* red, when the server is unreachable
* double red, when the server gives errors or fails certificate checking
* small white, when checking is not needed
When checking and when an error happens, the global synchronization setting is turned off. This way you should be reasonably safe that the synchronization does not try to connect to a server whose identity is not verified, given it is the same server as the one you check.
This is an open source (GPL) app. Source and further documentation is available via my Web site.
Permissions needed:
INTERNET - connect to your server (nowhere else)
ACCESS_NETWORK_STATE - determine your connection (WLAN, mobile...) to find out if checking is needed
READ_SYNC_SETTINGS, WRITE_SYNC_SETTINGS - turn sync off on checking or error
RECEIVE_BOOT_COMPLETED - automatic start (if possible, depending on Android version)
READ_EXTERNAL_STORAGE - read certificates from memory or SD card
Les applications Android standard pour mail, calendrier, contacts, etc. peuvent synchroniser sur des serveurs SSL protégé mais ne ont aucune possibilité de vérifier leur certificat. Fondamentalement, il est possible soit de vérifier si le certificat est délivré par une de la norme (avant Android 4.0, et non modifiable par l'utilisateur) ou non CA, vérifier eux à tous. Cela ne suffit pas d'affirmer de manière fiable l'identité du serveur, ce qui présente le risque de donner des informations sensibles (mots de passe de compte) au mauvais serveur. Ce problème est particulièrement important lorsque le serveur est sur une connexion semi-permament et trouvé via DNS dynamique, utilise des certificats auto-signés ou privé-CA, ou lorsque vous utilisez les hotspots WiFi publics (qui sont assez trivial de faux et sont donc un MitM régulière vecteur -Attaque).
Cette application contrôles dans des intervalles configurables si une URL HTTPS donnée est accessible et le serveur se identifie avec le bon certificat. Il se compose d'un widget écran d'accueil avec affichage de l'état de couleur "feux de signalisation":
* Vert, si la connexion est correcte
* Jaune, lorsqu'un chèque est en cours
* Rouge, lorsque le serveur est inaccessible
* Rouge double, lorsque le serveur donne des erreurs ou ne vérification de certificat
* Petit blanc, lors de la vérification ne est pas nécessaire
Lors de la vérification et quand une erreur se produit, le paramètre global de synchronisation est éteint. De cette façon, vous devriez être raisonnablement sûr que la synchronisation ne essaie pas de se connecter à un serveur dont l'identité ne est pas vérifiée, étant donné que ce est le même serveur que celui que vous vérifiez.
Ce est un logiciel libre (GPL) app. Source et autres documents sont disponibles par l'intermédiaire de mon site Web.
Autorisations nécessaires:
INTERNET - connecter à votre serveur (nulle part ailleurs)
ACCESS_NETWORK_STATE - déterminer votre connexion (WLAN, mobiles ...) pour savoir si le contrôle est nécessaire
READ_SYNC_SETTINGS, WRITE_SYNC_SETTINGS - arrêtez la synchro sur le contrôle ou une erreur
RECEIVE_BOOT_COMPLETED - démarrage automatique (si possible, en fonction de la version Android)
READ_EXTERNAL_STORAGE - lire certificats de la mémoire ou la carte SD