Aller au contenu
ecdsa.com
OpenSSL (client side)CLI OpenSSL

Message d’erreur

SSL routines:ssl_choose_client_version:unsupported protocol

Également affiché sous la forme

  • error:0A000102:SSL routines::unsupported protocol

La CLI openssl affiche « <thread>:error:0A000102:SSL routines:ssl_choose_client_version:unsupported protocol:<source> » ; curl, Node.js et d’autres applications affichent « error:0A000102:SSL routines::unsupported protocol ». OpenSSL 1.1.1 utilisait le code 1425F102.

OpenSSL (client side) — SSL_R_UNSUPPORTED_PROTOCOL: the server chose a version the client does not allow

Ce que cela signifie

Le client a proposé TLS 1.2 et 1.3, mais le ServerHello du serveur a choisi une version plus ancienne (généralement TLS 1.0), que l’OpenSSL du client n’a pas le droit d’utiliser. Le client abandonne dans ssl_choose_client_version. Les anciennes piles TLS ignorent la plage proposée par le client et répondent simplement avec leur propre version ; les piles modernes refuseraient plutôt avec une alerte protocol_version.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Confirmer la version du serveur

    Forcer TLS 1.0 au niveau de sécurité 0, pour cette seule commande de diagnostic, montre si le serveur ne parle que l’ancienne version.

    bash
    # Allowed only for this diagnostic command: which version does the server pick?
    echo | openssl s_client -connect legacy.example.com:443 -servername legacy.example.com \
      -tls1 -cipher 'DEFAULT:@SECLEVEL=0' -brief 2>&1 | grep -E 'Protocol version|error'
  2. 2.

    Activer TLS 1.2 et 1.3 sur le serveur

    Mettre à niveau le serveur (ou placer devant lui un terminateur TLS moderne) est la seule correction durable.

    text
    # Server side
    ssl_protocols TLSv1.2 TLSv1.3;     # nginx
    SSLProtocol -all +TLSv1.2 +TLSv1.3 # Apache httpd

Erreurs associées

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