Saltar al contenido
ecdsa.com
Java (JSSE)Java

Mensaje de error

javax.net.ssl.SSLHandshakeException: (protocol_version) Received fatal alert: protocol_version

También se muestra como

  • javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version

JDK 21 y las versiones posteriores incluyen el nombre de la alerta entre paréntesis. Si, en cambio, el servidor elige una versión que la JVM rechaza, Java dice «The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]».

Java (JSSE) — TLS alert 70 received from the server

Qué significa

El servidor rechazó las versiones de TLS que ofreció la JVM y respondió con la alerta 70 (protocol_version). Los JDK actuales solo ofrecen TLS 1.3 y 1.2 (1.0 y 1.1 están en jdk.tls.disabledAlgorithms), así que un servidor limitado a las versiones antiguas no tiene ninguna versión en común con ellos.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Averiguar qué versiones acepta el servidor

    Prueba cada versión con openssl s_client y luego corrige el lado que esté desactualizado.

    bash
    for v in tls1 tls1_1 tls1_2 tls1_3; do
      printf '%-7s ' "$v"
      echo | openssl s_client -connect legacy.example.com:443 -servername legacy.example.com -"$v" \
        -cipher 'DEFAULT:@SECLEVEL=0' >/dev/null 2>&1 && echo accepted || echo refused
    done
  2. 2.

    Quitar los protocolos fijados en el cliente

    Busca https.protocols o jdk.tls.client.protocols en los scripts de arranque y en las opciones de la JVM; permite TLSv1.3 y TLSv1.2.

    bash
    # Do not pin old versions on the client; let JSSE offer 1.3 and 1.2
    grep -rn 'https.protocols\|jdk.tls.client.protocols' /etc/default/app* "$JAVA_HOME/conf" 2>/dev/null
    java -Djdk.tls.client.protocols=TLSv1.3,TLSv1.2 -jar app.jar
  3. 3.

    Habilitar TLS 1.2 y 1.3 en el servidor

    La solución duradera: todos los clientes que siguen recibiendo mantenimiento las admiten.

    text
    # Server side: enable TLS 1.2 and 1.3
    ssl_protocols TLSv1.2 TLSv1.3;

Errores relacionados

Explorar toda la base de datos de errores de firma