Zum Inhalt springen
ecdsa.com
OpenSSL (client or server side)OpenSSL-CLI

Fehlermeldung

SSL routines:tls_setup_handshake:no protocols available

Auch ausgegeben als

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

Das CLI openssl (3.0 und 3.5) gibt „error:0A0000BF:SSL routines:tls_setup_handshake:no protocols available“ aus; Anwendungen, die Fehler ohne Funktionsnamen formatieren, zeigen „error:0A0000BF:SSL routines::no protocols available“.

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

Was der Fehler bedeutet

OpenSSL hat sich geweigert, den Handshake überhaupt zu beginnen, weil nach Anwendung aller Einschränkungen keine Protokollversion übrig bleibt, die es anbieten könnte. Typischerweise hat die Anwendung TLS 1.0 oder 1.1 verlangt, während das Sicherheitsniveau von OpenSSL (auf aktuellen Distributionen standardmäßig 2) diese verbietet, oder die konfigurierte Mindestversion liegt über der Höchstversion. An den Server wurde nichts gesendet.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Einschränkende Einstellung finden

    Sieh in openssl.cnf und in der Krypto-Richtlinie des Systems nach, welche Werte MinProtocol, MaxProtocol und @SECLEVEL in CipherString haben.

    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.

    Altes Gerät: Niveau für einen einzelnen Befehl senken

    Mit @SECLEVEL=0 im Cipher-String ist TLS 1.0/1.1 nur für diesen Aufruf wieder aktiviert. Halte solche Ausnahmen aus der systemweiten Konfiguration und aus nicht vertrauenswürdigen Netzwerken heraus.

    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.

    Konsistenten Versionsbereich verwenden

    Stelle sicher, dass das Minimum nicht über dem Maximum liegt; TLS 1.2 bis TLS 1.3 ist heute der übliche Bereich.

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

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen