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
Các ứng dụng Android tiêu chuẩn cho mail, lịch, danh bạ, vv có thể đồng bộ hóa với các máy chủ SSL bảo vệ nhưng không có tùy chọn để kiểm tra giấy chứng nhận của họ. Về cơ bản, nó có thể hoặc là kiểm tra xem giấy chứng nhận được cấp bởi một trong những tiêu chuẩn (trước khi Android 4.0, không sử dụng có thể chỉnh sửa) CA, hoặc không kiểm tra xem chúng ở tất cả. Điều này là không đủ để khẳng định chắc chắn danh tính của các máy chủ, trong đó trình bày các nguy cơ cho các thông tin nhạy cảm (mật khẩu tài khoản) để các máy chủ sai. Đây là vấn đề đặc biệt quan trọng khi các máy chủ được trên một kết nối bán permament và tìm thấy thông qua DNS động, sử dụng các chứng chỉ tự ký kết hoặc tin-CA, hoặc khi sử dụng các điểm nóng WiFi công cộng (trong số này khá tầm thường để giả và vì thế là một công MITM thường xuyên vector -attack).
Này kiểm tra ứng dụng trong khoảng thời gian cấu hình nếu một URL HTTPS cho thể truy cập và máy chủ xác định chính nó với giấy chứng nhận quyền. Nó bao gồm một widget màn hình chủ hiển thị trạng thái các màu với "đèn tín hiệu":
* Xanh, nếu kết nối là sao
* Màu vàng, khi kiểm tra đang được tiến hành
* Đỏ, khi máy chủ là không thể truy cập
* Đỏ đôi, khi máy chủ sẽ cho lỗi hoặc không kiểm tra giấy chứng nhận
* Trắng nhỏ, khi kiểm tra là không cần thiết
Khi kiểm tra, khi một lỗi xảy ra, các thiết lập đồng bộ hóa toàn cầu đang tắt. Bằng cách này bạn sẽ có khá an toàn mà đồng bộ hóa không cố gắng để kết nối với một máy chủ có danh tính chưa được xác minh, cho nó là máy chủ giống như các bạn kiểm tra.
Đây là một ứng dụng mã nguồn mở (GPL). Nguồn và tài liệu hướng dẫn đầy đủ có sẵn thông qua trang Web của tôi.
Điều khoản cần thiết:
INTERNET - kết nối với máy chủ của bạn (không nơi nào khác)
ACCESS_NETWORK_STATE - xác định kết nối của bạn (WLAN, điện thoại di động ...) để tìm hiểu xem việc kiểm tra là cần thiết
READ_SYNC_SETTINGS, WRITE_SYNC_SETTINGS - biến đồng bộ tắt về kiểm tra hoặc báo lỗi
RECEIVE_BOOT_COMPLETED - bắt đầu tự động (nếu có thể, tùy thuộc vào phiên bản Android)
READ_EXTERNAL_STORAGE - đọc giấy chứng nhận từ bộ nhớ hoặc thẻ SD