• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

329
Vistas
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

about 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

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 .

about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda