Como instalar um certificado CA confiável no dispositivo Android?
Criei o meu próprio certificado CA e agora quero instalá-lo no meu dispositivo Android Froyo (HTC Desire Z), para que o dispositivo confie no meu certificado.
Android armazena certificados CA na sua loja de chaves Java em `/system/etc/security/cacerts.bks'. Eu copiei o arquivo para o meu computador, adicionei meu certificado usando portecle 1.5 e o empurrei de volta para o dispositivo.
Agora, o Android não parece recarregar o arquivo automaticamente. Eu li em vários blogs que preciso reiniciar o dispositivo. Fazendo isso, o arquivo é substituído pelo original novamente.
Minha próxima tentativa foi instalar o certificado do cartão SD, copiando-o e usando a opção de acordo com o menu de configurações. O dispositivo me diz que o certificado foi instalado, mas aparentemente ele não confia no certificado. Além disso, quando eu tento copiar o keystore para o meu computador, eu ainda encontro o estoque original `cacerts.bks'.
Então, qual é a maneira correta de instalar meu próprio certificado CA raiz em um dispositivo Android 2.2 como um certificado confiável? Existe uma forma de o fazer de forma programática?
Passei muito tempo tentando encontrar uma resposta para isso (preciso do Android para ver os certificados StartSSL). Conclusão: O Android 2.1 e 2.2 permitem importar certificados, mas apenas para uso com WiFi e VPN. Não há interface de usuário para atualizar a lista de certificados de root confiáveis, mas há discussão sobre a adição dessa funcionalidade. Não está claro se existe uma alternativa confiável para atualizar e substituir manualmente o arquivo cacerts.bks.
Detalhes e links: http://www.mcbsys.com/techblog/2010/12/android-certificates/. Nesse post, veja o link para o bug 11231 do Android -- você pode querer adicionar seu voto e consulta a esse bug.
Se você precisar do seu certificado para conexões HTTPS, você pode adicionar o arquivo .bks como um recurso bruto à sua aplicação e estender a DefaultHttpConnection para que seus certificados sejam usados para conexões HTTPS.
Aqui's uma solução alternativa que realmente adiciona o seu certificado à lista de certificados incorporados: https://stackoverflow.com/questions/2642777/trusting-all-certificates-using-httpclient-over-https/6378872#6378872
No entanto, só funcionará para a sua candidatura. Não existe's nenhuma maneira de programar todas as aplicações num dispositivo do utilizador's, uma vez que isso seria um risco de segurança.