Verifica se o seu servidor está acessível e apresenta o certificado SSL correto
Os aplicativos Android padrão para e-mail, calendário, contatos etc. podem sincronizar com servidores protegidos por SSL, mas não têm opção de verificar seu certificado. Basicamente, é possível verificar se o certificado foi emitido por uma das CAs padrão (anteriores ao Android 4.0, não editável pelo usuário) ou nem verificá-los. Isto não é suficiente para afirmar de forma confiável a identidade do servidor, o que apresenta o risco de fornecer informações confidenciais (senhas de contas) ao servidor errado. Este problema é especialmente importante quando o servidor está em uma conexão semipermanente e é encontrado via DNS dinâmico, usa certificados CA autoassinados ou privados, ou quando usa pontos de acesso WiFi públicos (que são bastante triviais para falsificar e, portanto, são um MitM regular. -vetor de ataque).
Este aplicativo verifica em intervalos configuráveis se um determinado URL HTTPS está acessível e o servidor se identifica com o certificado correto. Consiste em um widget da tela inicial que exibe o status com "luzes de sinalização" coloridas:
* verde, se a conexão estiver correta
* amarelo, quando uma verificação está em andamento
* vermelho, quando o servidor está inacessível
* vermelho duplo, quando o servidor apresenta erros ou falha na verificação do certificado
* branco pequeno, quando a verificação não é necessária
Ao verificar e quando ocorre um erro, a configuração de sincronização global é desativada. Dessa forma, você deve estar razoavelmente seguro de que a sincronização não tentará se conectar a um servidor cuja identidade não seja verificada, visto que é o mesmo servidor que você verifica.
Este é um aplicativo de código aberto (GPL). Fonte e documentação adicional estão disponíveis em meu site.
Permissões necessárias:
INTERNET - conecte-se ao seu servidor (em nenhum outro lugar)
ACCESS_NETWORK_STATE - determine sua conexão (WLAN, celular...) para descobrir se é necessária verificação
READ_SYNC_SETTINGS, WRITE_SYNC_SETTINGS - desativa a sincronização na verificação ou erro
RECEIVE_BOOT_COMPLETED - início automático (se possível, dependendo da versão do Android)
READ_EXTERNAL_STORAGE - lê certificados da memória ou cartão SD
Leia mais