Saltar al contenido
ecdsa.com
OpenSSL (client or server side)CLI de OpenSSL

Mensaje de error

SSL routines:tls_setup_handshake:no protocols available

También se muestra como

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

La CLI de openssl (3.0 y 3.5) imprime «error:0A0000BF:SSL routines:tls_setup_handshake:no protocols available»; las aplicaciones que formatean los errores sin el nombre de la función muestran «error:0A0000BF:SSL routines::no protocols available».

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

Qué significa

OpenSSL se negó incluso a iniciar el handshake porque, después de aplicar todas las restricciones, no queda ninguna versión de protocolo que ofrecer. Normalmente, la aplicación pidió TLS 1.0 o 1.1 mientras el nivel de seguridad de OpenSSL (2 de forma predeterminada en las distribuciones actuales) prohíbe esas versiones, o la versión mínima configurada es superior a la máxima. No se envió nada al servidor.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Encontrar la configuración que impone la restricción

    Busca en openssl.cnf y en la política criptográfica del sistema los valores de MinProtocol, MaxProtocol y CipherString @SECLEVEL.

    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.

    Dispositivo antiguo: bajar el nivel para un solo comando

    Añadir @SECLEVEL=0 a la cadena de cifrados vuelve a activar TLS 1.0/1.1 solo para esa ejecución. Mantén estas excepciones fuera de la configuración de todo el sistema y lejos de redes que no son de confianza.

    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.

    Usar un rango de versiones coherente

    Asegúrate de que el mínimo no supera el máximo; de TLS 1.2 a TLS 1.3 es el rango habitual hoy en día.

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

Errores relacionados

Explorar toda la base de datos de errores de firma