Zum Inhalt springen
ecdsa.com
Node.js crypto (OpenSSL 3)Node.js crypto

Fehlermeldung

error:1E08010C:DECODER routines::unsupported

Reproduziert mit Node 26 / OpenSSL 3.x. Die OpenSSL-CLI gibt die lange Form aus: „error:1E08010C:DECODER routines:OSSL_DECODER_from_bio:unsupported“. Unter Node ≤16 (OpenSSL 1.1.1) führten dieselben Fehler zu anderen Meldungen.

Node.js crypto (OpenSSL 3) — code ERR_OSSL_UNSUPPORTED

Was der Fehler bedeutet

Der Decoder von OpenSSL 3 konnte das Schlüsselmaterial, das du an createPrivateKey(), createPublicKey(), sign() oder verify() übergeben hast, nicht parsen. Trotz des Worts „unsupported“ geht es fast nie um einen fehlenden Algorithmus: Die Bytes sind in keinem der Formate, die der Decoder probiert hat, ein lesbarer Schlüssel.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    PEMs aus Umgebungsvariablen normalisieren und Label prüfen

    Stelle die Zeilenumbrüche wieder her und gib die erste Zeile aus. Steht im Label PUBLIC KEY, wo du createPrivateKey aufrufst, ist die Variable mit dem falschen Schlüssel belegt.

    js
    const pem = process.env.SIGNING_KEY.replace(/\\n/g, "\n");
    console.log(pem.split("\n")[0]);
    // -----BEGIN PRIVATE KEY-----      → createPrivateKey(pem)
    // -----BEGIN PUBLIC KEY-----       → createPublicKey(pem)
    // -----BEGIN EC PRIVATE KEY-----   → createPrivateKey(pem)  (SEC1, also fine)
  2. 2.

    DER ausdrücklich angeben

    Liegt der Schlüssel als binäres DER vor (aus einem Datenbank-Blob, einer JWKS-Konvertierung oder Protobuf), gib Format und Typ an; der Decoder rät nicht.

    js
    import { createPrivateKey } from "node:crypto";
    
    const key = createPrivateKey({
      key: derBuffer,
      format: "der",
      type: "pkcs8",   // or "sec1" for BEGIN EC PRIVATE KEY material
    });
  3. 3.

    Material außerhalb von Node prüfen

    Lass dir von OpenSSL sagen, was die Bytes tatsächlich sind. Schlägt auch das fehl, sind die Daten selbst beschädigt – korrigiere die Quelle, nicht den Node-Aufruf.

    bash
    openssl pkey -in key.pem -noout -text | head
    # for DER:
    openssl pkey -in key.der -inform der -noout -text | head

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen