Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

381
Visualizações
Cómo funciona SSL Handshaking en Java 7 vs Java 8

Recientemente, mientras trabajaba con HttpClient para acceder al servicio de terceros (servicio CURL) en la aplicación Java, me encontré con un problema como:

 javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake ....

Tengo este problema en JDK 7. Con algunas investigaciones sobre este problema, encontré 2 sugerencias, es decir

  • Agregue el certificado de ese tercero en particular en su JDK 7 Truststore. [Lo que probé pero aún tengo el mismo problema]
  • Use JDK 8 en lugar de JDK 7 [que probé y funcionó para mí]

Entonces, estoy tratando de entender cómo se lleva a cabo SSL Handshaking en Java 8 en comparación con Java 7 o inferior. Y puedo solucionar este problema en JDK7

Fragmento de código

 public String getProduct(final String accessToken) throws IOException, ParseException { log.info("accessToken: " + accessToken); final String stringUrl = "https://api.molt.in/v1/products"; HttpClient httpClient = HttpClientBuilder.create().build(); HttpGet getRequest = new HttpGet(stringUrl); getRequest.setHeader("Authorization", "Bearer " + accessToken); HttpContext httpContext = new BasicHttpContext(); HttpResponse response = httpClient.execute(getRequest, httpContext); log.info("Response Code : " + response.getStatusLine().getStatusCode()); BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); StringBuffer result = new StringBuffer(); String line = ""; while ((line = rd.readLine()) != null) { result.append(line); } log.info("result: " + result); rd.close(); return result.toString(); }

~ Saludos,

Chandán

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

El servidor cierra el protocolo de enlace porque el cliente usa un protocolo no compatible. Consulte esta pregunta , donde se sugiere iniciar Java 7 con:

 -Dhttps.protocols=TLSv1.1,TLSv1.2

Obtendría un error de su cliente (javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failure) si el certificado del servidor no fuera de confianza, y funciona de esta manera: el cliente Java verifica el certificado del servidor para asegurarse de que la máquina con la que está hablando es realmente quien dice ser, en su ejemplo "api.molt.in". El cheque funciona así:

  • si el certificado está autofirmado, es de confianza si se encuentra en el almacén de confianza predeterminado
  • si el certificado está firmado por una autoridad, es de confianza si el certificado de la autoridad se encuentra en el almacén de confianza predeterminado.

La lista de partes de confianza puede actualizarse en cada versión menor de Java. Por ejemplo, Java 8 solo confía en los certificados generados con Let's encrypt desde la actualización 101 .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda