Zum Inhalt springen
ecdsa.com
OpenSSL (server side: nginx, Apache, Postfix, openssl s_server)OpenSSL-CLI

Fehlermeldung

SSL routines:tls_post_process_client_hello:no shared cipher

Auch ausgegeben als

  • SSL_do_handshake() failed (SSL: error:0A0000C1:SSL routines::no shared cipher)
  • error:0A0000C1:SSL routines::no shared cipher

openssl s_server (OpenSSL 3.x) protokolliert „error:0A0000C1:SSL routines:tls_post_process_client_hello:no shared cipher:<source>“; nginx protokolliert „SSL_do_handshake() failed (SSL: error:0A0000C1:SSL routines::no shared cipher) while SSL handshaking“ auf der Stufe info, deshalb ist die Meldung mit der Standardstufe von error_log unsichtbar. OpenSSL 1.1.1 verwendete den Code 1417A0C1.

OpenSSL (server side: nginx, Apache, Postfix, openssl s_server) — SSL_R_NO_SHARED_CIPHER

Was der Fehler bedeutet

Das ist die Sicht des Servers auf einen fehlgeschlagenen Handshake: Keine der Cipher Suites im ClientHello des Clients ist auf dem Server aktiviert und zugleich mit dem Schlüssel des Serverzertifikats nutzbar. Der Server sendet dem Client daraufhin handshake_failure (Alert 40). Die Meldung erscheint in Server-Logs, nicht in der Ausgabe des Clients.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Zertifikatsschlüssel mit den Suites abgleichen

    Suites vom Typ ECDHE-ECDSA-* brauchen ein ECDSA-Zertifikat, ECDHE-RSA-* ein RSA-Zertifikat; Server mit beiden Zertifikaten können beide Familien aufführen.

    bash
    # ECDSA key + only ECDHE-RSA suites (or the reverse) leaves nothing usable
    openssl x509 -in server.pem -noout -text | grep 'Public Key Algorithm'
    openssl ciphers -v 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256'
  2. 2.

    Tatsächlich akzeptierte Suites des Servers auflisten

    Ermittle sie von außen und vergleiche sie mit den Clients, die du unterstützen musst.

    bash
    # Which TLS 1.2 suites does the server accept? (nmap needed)
    nmap --script ssl-enum-ciphers -p 443 api.example.com
  3. 3.

    Gut getestete Suite-Liste verwenden

    Starte mit einer generierten Konfiguration (Modern oder Intermediate), statt Listen von Hand zu kürzen.

    text
    # nginx: suites for both RSA and ECDSA certificates, TLS 1.3 enabled
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen