Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro de Comunicação do Server SSL

Estou obtendo este erro ao tentar acessar meu servidor, o qual não tem um certificado válido ainda. É um ambiente de testes... java.security.cert.CertPathValidatorException: Trust anchor for certification path not found

Teria como resolver fazendo o android entender que pode confiar neste server mesmo assim?!

3 respostas
solução!

Olá Felipe,

Não tenho muita experiência com esse tópico mas numa busca rápida encontrei essa possível solução:

private void trustEveryone() { 
    try { 
            HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier(){ 
                    public boolean verify(String hostname, SSLSession session) { 
                            return true; 
                    }}); 
            SSLContext context = SSLContext.getInstance("TLS"); 
            context.init(null, new X509TrustManager[]{new X509TrustManager(){ 
                    public void checkClientTrusted(X509Certificate[] chain, 
                                    String authType) throws CertificateException {} 
                    public void checkServerTrusted(X509Certificate[] chain, 
                                    String authType) throws CertificateException {} 
                    public X509Certificate[] getAcceptedIssuers() { 
                            return new X509Certificate[0]; 
                    }}}, new SecureRandom()); 
            HttpsURLConnection.setDefaultSSLSocketFactory( 
                            context.getSocketFactory()); 
    } catch (Exception e) { // should never happen 
            e.printStackTrace(); 
    } 
}

Basicamente nesse código estamos configurando o HttpsUrlConnection para confiar em qualquer certificado. Claro que isso não é recomendado em produção então não se esqueça de remover esse código quando o seu certificado estiver configurado no seu servidor.

Blz, professor. Obrigado.

Mas como seria no caso de fazer isso para produção? Aquele código do nosso projeto seria suficiente?

Olá Felipe,

Acredito que o código do curso seja suficiente sim.

Uma ótima referência sobre o assunto caso você precise de algo mais avançado é a própria documentação do Android. Se quiser dá uma olhadinha lá também:

https://developer.android.com/training/articles/security-ssl.html