Zum Inhalt springen
ecdsa.com
OpenSSL 3.xOpenSSL-CLI

Fehlermeldung

error:0480006C:PEM routines::no start line

Reproduziert unter Node 26 (OpenSSL 3.5) mit X509Certificate und tls.createSecureContext(). OpenSSL 1.1.1 gibt denselben Fehler als „error:0909006C:PEM routines:get_name:no start line“ aus, OpenSSL 1.1.0 als „error:0906D06C:PEM routines:PEM_read_bio:no start line“. Eine verwandte Meldung: „error:04800066:PEM routines::bad end line“, wenn die END-Markierung beschädigt ist.

OpenSSL 3.x — also surfaces in Node as ERR_OSSL_PEM_NO_START_LINE

Was der Fehler bedeutet

Ein PEM-Parser hat die Eingabe nach einer Zeile „-----BEGIN ...-----“ durchsucht, die zum erwarteten Objekt passt, und keine gefunden. Entweder ist die Datei gar kein PEM (binäres DER, JSON, leer), oder das BEGIN-Label nennt ein anderes Objekt als das, das der Parser erwartet, oder der Rahmen wurde unterwegs beschädigt.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Die ersten Bytes ansehen

    Eine einzige Zeile von xxd unterscheidet PEM (ASCII-Bindestriche), DER (erstes Byte 0x30) und Datenmüll. Konvertiere oder korrigiere dann entsprechend.

    bash
    head -c 32 file | xxd
    # 2d 2d 2d 2d 2d ("-----")  → PEM: check the label matches what the tool expects
    # 30 82 ...                  → DER: add -inform der or convert:
    openssl x509 -inform der -in cert.der -out cert.pem
  2. 2.

    Bei der Übertragung beschädigtes PEM reparieren

    Stelle die Zeilenumbrüche wieder her und entferne BOM und CR. Nach der Reparatur muss die BEGIN-Zeile genau aus fünf Bindestrichen, dem Label und wieder fünf Bindestrichen bestehen.

    bash
    printf '%s' "$PEM_VAR" | sed 's/\\n/\n/g' | sed '1s/^\xef\xbb\xbf//' | tr -d '\r' > fixed.pem
    head -1 fixed.pem   # -----BEGIN CERTIFICATE-----
  3. 3.

    In Node vor dem Parsen normalisieren

    Derselbe Fehler erscheint bei X509Certificate und bei der Option cert von tls.createSecureContext() als Code ERR_OSSL_PEM_NO_START_LINE; die Korrektur der Zeilenumbrüche aus Umgebungsvariablen löst die meisten Fälle. Funktionen, die Schlüssel laden (createPublicKey, createPrivateKey), melden nicht parsbare Eingaben stattdessen als „error:1E08010C:DECODER routines::unsupported“.

    js
    import { X509Certificate } from "node:crypto";
    const cert = new X509Certificate(process.env.CERT_PEM.replace(/\\n/g, "\n"));

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen