Aller au contenu
ecdsa.com
Java (JSSE)Java

Message d’erreur

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

Également affiché sous la forme

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

À partir du JDK 21, le nom de l’alerte figure entre parenthèses. Si le serveur choisit au contraire une version que la JVM refuse, Java affiche « The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12] ».

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

Ce que cela signifie

Le serveur a refusé les versions de TLS proposées par la JVM et a répondu par l’alerte 70 (protocol_version). Les JDK actuels ne proposent que TLS 1.3 et 1.2 (1.0 et 1.1 figurent dans jdk.tls.disabledAlgorithms) : un serveur limité aux anciennes versions n’a donc aucune version en commun avec eux.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Trouver les versions acceptées par le serveur

    Testez chaque version avec openssl s_client, puis corrigez le côté qui est obsolète.

    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.

    Supprimer les versions de protocole figées côté client

    Recherchez https.protocols ou jdk.tls.client.protocols dans les scripts de démarrage et les options de la JVM ; autorisez TLSv1.3 et 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.

    Activer TLS 1.2 et 1.3 sur le serveur

    La correction durable : tous les clients maintenus les prennent en charge.

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

Erreurs associées

Parcourir toute la base de données des erreurs de signature