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
posta, takvim, kişiler vb standart Android uygulamaları SSL korumalı sunuculara karşı senkronize ancak sertifika kontrol için hiçbir seçenek olabilir. Temelde, sertifika standardının biri tarafından verilen ise (Android 4.0 önce değil, kullanıcı düzenlenebilir) CA'lar, ya da hiç onları kontrol edin ya mümkündür. Bu güvenilir yanlış sunucuya hassas bilgileri (hesap şifreleri) verme riski oluşturan sunucusu, kimliğini ifade etmek yeterli değildir. Sahte oldukça önemsiz ve bu nedenle düzenli bir MitM kamu WiFi hotspot (kullanırken sunucu yarı-permament bağlantıda olduğu ve dinamik DNS üzerinden bulundu, kendinden imzalı veya özel-CA sertifikalarını kullanır, ya da bu sorun özellikle önemlidir Attack vektörü).
Yapılandırılabilir aralıklarla bu uygulama kontrolleri, belirli bir HTTPS URL ulaşılabilir ve sunucu doğru sertifika ile kendini tanımlar eğer. Bu renkli "sinyal ışıkları" ile durumunu gösteren bir ana ekran widget oluşur:
* Yeşil bağlantısı tamam, eğer
* Bir çek devam olduğunda, sarı
* Kırmızı, sunucu erişilemiyor
Sunucu hataları verir veya sertifika denetimi başarısız * çift kırmızı,
Denetimi gerekli değildir * küçük beyaz,
Bir hata olduğunda zaman kontrol ve küresel senkronizasyon ayarı kapalı. Eğer senkronizasyon kimliği doğrulanmadı bir sunucuya bağlanmayı deneyin etmediğini oldukça güvenli olmalı bu şekilde, kontrol aynı sunucu verilen.
Bu açık kaynak kodlu (GPL) app. Kaynak ve daha fazla dokümantasyon benim web sitesi aracılığıyla kullanılabilir.
İzinler gerekli:
İNTERNET - (başka hiçbir yerde) sunucusuna bağlanmak
ACCESS_NETWORK_STATE - denetimi gerekli olup olmadığını öğrenmek için bağlantı (WLAN, mobil ...) belirlemek
READ_SYNC_SETTINGS, WRITE_SYNC_SETTINGS - kontrol hata veya senkronizasyonu kapatmak
RECEIVE_BOOT_COMPLETED - Otomatik başlatma (mümkünse, Android sürümüne bağlı olarak)
READ_EXTERNAL_STORAGE - bellek veya SD karttan sertifika okumak