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

Jersey Client ignore self-asigned ssl cert

Como ignorar um certificado ssl auto-assinado utilizando jersey client? Estou tentando consumir um serviço https e é retornado timeout.

3 respostas

Luan, não sou especialista no assunto mas acredito que este código pode ti ajudar:

// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager(){
    public X509Certificate[] getAcceptedIssuers(){return null;}
    public void checkClientTrusted(X509Certificate[] certs, String authType){}
    public void checkServerTrusted(X509Certificate[] certs, String authType){}
}};

// Install the all-trusting trust manager
try {
    SSLContext sc = SSLContext.getInstance("TLS");
    sc.init(null, trustAllCerts, new SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
    ;
}

Opa amigo Mario, estou fazendo dessa forma, mas sem sucesso, retorna 404. Não é o serviço porque chamo pelo postman e funciona.

solução!

Mario, consegui encontrar o problema, era URL mal formada, pois continha parâmetros diretamente no path como "/?" e "&". Passei a usar o .queryParam(String arg0, Object... arg1 ) e funcionou. Era até lógico, porque se o servidor retornava 404 é porque conseguia chegar lá.

conteudo = target.path("api/v1/consultas")
                        .queryParam("de", "2017-06-01")
                        .queryParam("ate", "2017-06-30")
                        .request()
                        .get(Consultas.class);

A solução que você e eu encontramos atende o tópico deste fórum, mas o problema era com a URL.

Obrigado pela atenção.