¿Por qué el servidor de jetty no aceptó un protocolo al enviar una solicitud?

0

Versión de Java

1.8

Versión embarcadero

9.3.x

  • Trying :13443...
  • TCP_NODELAY set
  • Connected to (10.61.45.225) port 13443 (#0)
  • ALPN, offering http/1.1
  • Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
  • successfully set certificate verify locations:
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none
  • TLSv1.2 (OUT), TLS header, Certificate Status (22):
  • TLSv1.2 (OUT), TLS handshake, Client hello (1):
  • TLSv1.2 (IN), TLS handshake, Server hello (2):
  • TLSv1.2 (IN), TLS handshake, Certificate (11):
  • TLSv1.2 (IN), TLS handshake, Server key exchange (12):
  • TLSv1.2 (IN), TLS handshake, Request CERT (13):
  • TLSv1.2 (IN), TLS handshake, Server finished (14):
  • TLSv1.2 (OUT), TLS handshake, Certificate (11):
  • TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
  • TLSv1.2 (OUT), TLS handshake, CERT verify (15):
  • TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
  • TLSv1.2 (OUT), TLS handshake, Finished (20):
  • TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
  • TLSv1.2 (IN), TLS handshake, Finished (20):
  • SSL connection using TLSv1.2 / ECDHE-RSA-AES256-SHA384 ALPN, server did not agree to a protocol Server certificate: subject: [email protected] start date: Jan 23 07:06:56 2020 GMT expire date: Jul 23 07:07:06 2020 GMT issuer: CN= SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway. GET /path/to/resource HTTP/1.1 Host: :13443 User-Agent: curl/7.65.0 Accept: / Mark bundle as not supporting multiuse < HTTP/1.1 200 OK < Date: Fri, 24 Jan 2020 10:53:03 GMT < Access-Control-Allow-Origin: * < Content-Type: application/json;charset=utf-8;profile=some-value# < X-Content-Type-Options: nosniff < X-Content-Type-Options: nosniff < Content-Length: 305 < Server: Jetty(9.3.21.v20170918) <

Mi pregunta es ¿con qué protocolo no está de acuerdo el servidor? Según los registros, parece que ALPN se ofreció a usar http / 1.1 y el servidor podría no estar de acuerdo con él y, por lo tanto, con el registro.

Hay alguna solución para esto ?

¿Por qué se requiere una solución?

Estoy pensando que debido a esto, la solicitud que se envió originalmente como una solicitud https se resolvió en una solicitud http cuando se depuró en el código. Consulte los registros a continuación. ingrese la descripción de la imagen aquí

9
  • Según los registros, el protocolo de enlace se realiza a través de TLSv1.2 desde ambos lados. ¿No es así? Si es así, ¿no significa eso que el servidor también está hablando por el mismo protocolo? 27/01/20 a las 8:23
  • ¿Qué versión de Java estás usando? 27/01/20 a las 8:27
  • Aquí está mi versión de Java 1.8.0_231 27/01/20 a las 8:28
  • De acuerdo ... entonces probablemente necesites leer / revisar esto: eclipse.org/jetty/documentation/current/alpn-chapter.html . Necesita hacer ... cosas ... para que ALPN funcione con Java 8 y Jetty. 27/01/20 a las 8:29
  • Lo leí pero no pude encontrarle mucho sentido. ¿Existe un mejor lugar para leer sobre esto? O tal vez intente leerlo de nuevo. 27/01/20 a las 8:31
0

Resulta que jetty no tenía ssl configurado correctamente. Para resolver eso, le agregué la siguiente configuración.

<New id="tlsHttpConfig" class="org.eclipse.jetty.server.HttpConfiguration"> <Arg> <New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration"> <!-- This says... Redirect to https://host:8443 if server returns "NOT SECURE" error --> <Set name="secureScheme">https</Set> <Set name="securePort">8443</Set> </New> </Arg> <Call name="addCustomizer"> <Arg> <New class="org.eclipse.jetty.server.SecureRequestCustomizer" /> </Arg> </Call> </New>