Pular para o conteúdo
ecdsa.com
Java (JSSE)Java

Mensagem de erro

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

Também aparece como

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

O JDK 21 e as versões posteriores incluem o nome do alerta entre parênteses. Se, em vez disso, o servidor escolher uma versão que a JVM recusa, o Java diz “The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]”.

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

O que significa

O servidor recusou as versões de TLS que a JVM ofereceu e respondeu com o alerta 70 (protocol_version). Os JDKs atuais oferecem apenas TLS 1.3 e 1.2 (o 1.0 e o 1.1 estão em jdk.tls.disabledAlgorithms), então um servidor limitado às versões antigas não tem nenhuma versão em comum com eles.

Por que acontece

Como corrigir

  1. 1.

    Descobrir quais versões o servidor aceita

    Teste cada versão com o openssl s_client; depois corrija o lado que estiver desatualizado.

    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.

    Remover a fixação de protocolos no cliente

    Procure https.protocols ou jdk.tls.client.protocols nos scripts de inicialização e nas opções da JVM; permita TLSv1.3 e 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.

    Ativar TLS 1.2 e 1.3 no servidor

    A correção duradoura: todos os clientes ainda mantidos oferecem suporte a essas versões.

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

Erros relacionados

Ver toda a base de erros de assinatura