Aller au contenu
ecdsa.com
curl (OpenSSL backend)curl

Message d’erreur

curl: (35) TLS connect error: error:0A00042E:SSL routines::tlsv1 alert protocol version

Également affiché sous la forme

  • curl: (35) error:0A00042E:SSL routines::tlsv1 alert protocol version
  • curl: (35) error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version

Les versions récentes de curl ajoutent « TLS connect error: » devant la raison donnée par OpenSSL. OpenSSL 1.1.1 indique aussi la fonction : « error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version ». Si c’est au contraire le serveur qui choisit une version que le client refuse, le client signale « unsupported protocol ».

curl (OpenSSL backend) — CURLE_SSL_CONNECT_ERROR, TLS alert 70 (protocol_version) received from the server

Ce que cela signifie

Le serveur a envoyé l’alerte TLS 70 (protocol_version) : aucune des versions de TLS proposées par curl ne lui convient. Le préfixe « tlsv1 » est seulement le nom qu’OpenSSL donne aux alertes définies depuis TLS 1.0, et non la version utilisée. En général, le serveur est bloqué sur TLS 1.0/1.1 alors que le client propose 1.2 et 1.3, ou bien un client a été plafonné en dessous du minimum du serveur.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Trouver les versions acceptées par le serveur

    Essayez chaque version avec openssl s_client. Le résultat indique s’il faut corriger le serveur (seuls tls1/tls1_1 sont acceptés) ou le client (il n’a jamais proposé la version acceptée).

    bash
    for v in tls1 tls1_1 tls1_2 tls1_3; do
      printf '%s: ' "$v"
      openssl s_client -connect api.example.com:443 -servername api.example.com -"$v" </dev/null >/dev/null 2>&1 \
        && echo accepted || echo refused
    done
  2. 2.

    Activer TLS 1.2 et 1.3 sur le serveur

    Mettez à jour la configuration TLS (et, si nécessaire, la bibliothèque TLS ou le système d’exploitation) pour que le serveur accepte TLS 1.2 et 1.3.

    text
    # nginx
    ssl_protocols TLSv1.2 TLSv1.3;
    # HAProxy (global section)
    ssl-default-bind-options ssl-min-ver TLSv1.2
  3. 3.

    Supprimer les plafonds de version côté client

    Supprimez --tls-max et les anciennes options de protocole des scripts et du .curlrc ; ne fixez qu’un minimum, pour que curl puisse négocier la version la plus élevée que les deux parties prennent en charge.

    bash
    grep -nE 'tls-max|tlsv1|sslv3' ~/.curlrc   # a forgotten cap in the config file
    curl --tlsv1.2 https://api.example.com/        # minimum 1.2, no maximum

Erreurs associées

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