Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

382
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!