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

Message d’erreur

SSL routines:tls_setup_handshake:no protocols available

Également affiché sous la forme

  • error:0A0000BF:SSL routines::no protocols available

La CLI openssl (3.0 et 3.5) affiche « error:0A0000BF:SSL routines:tls_setup_handshake:no protocols available » ; les applications qui formatent les erreurs sans le nom de la fonction affichent « error:0A0000BF:SSL routines::no protocols available ».

OpenSSL (client or server side) — SSL_R_NO_PROTOCOLS_AVAILABLE before the handshake starts

Ce que cela signifie

OpenSSL a refusé ne serait-ce que de commencer le handshake car, une fois toutes les restrictions appliquées, il ne reste aucune version du protocole à proposer. En général, l’application a demandé TLS 1.0 ou 1.1 alors que le niveau de sécurité d’OpenSSL (2 par défaut sur les distributions actuelles) les interdit, ou bien la version minimale configurée est supérieure à la version maximale. Rien n’a été envoyé au serveur.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Trouver le paramètre restrictif

    Recherchez dans openssl.cnf et dans la politique cryptographique du système les valeurs de MinProtocol, de MaxProtocol et de @SECLEVEL dans CipherString.

    bash
    openssl version -d                                  # where openssl.cnf lives
    grep -nE 'MinProtocol|MaxProtocol|CipherString' /usr/lib/ssl/openssl.cnf /etc/ssl/openssl.cnf 2>/dev/null
    update-crypto-policies --show 2>/dev/null           # RHEL/Fedora system policy
  2. 2.

    Équipement ancien : abaisser le niveau pour une seule commande

    Ajouter @SECLEVEL=0 à la chaîne de chiffrements réactive TLS 1.0/1.1 pour cette seule invocation. Ne placez pas de telles exceptions dans la configuration globale du système et ne les utilisez pas sur des réseaux non fiables.

    bash
    # For a one-off test against a legacy device: lower the security level for this command only
    echo | openssl s_client -connect legacy.example.com:443 -tls1 -cipher 'DEFAULT:@SECLEVEL=0'
  3. 3.

    Utiliser une plage de versions cohérente

    Assurez-vous que le minimum ne dépasse pas le maximum ; la plage habituelle aujourd’hui va de TLS 1.2 à TLS 1.3.

    ini
    # openssl.cnf (system_default_sect): a consistent range
    MinProtocol = TLSv1.2
    MaxProtocol = TLSv1.3

Erreurs associées

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