Zum Inhalt springen
ecdsa.com
Python cryptographyPython cryptography

Fehlermeldung

Password was not given but private key is encrypted

Den spiegelbildlichen Fall gibt es auch: „Password was given but private key is not encrypted.“ – derselbe Aufruf, umgekehrte Unstimmigkeit (beides reproduziert mit cryptography 50.0).

Python cryptography — TypeError from load_pem_private_key

Was der Fehler bedeutet

Du hast load_pem_private_key(data, password=None) für einen verschlüsselten Schlüssel aufgerufen – in seinem PEM steht ENCRYPTED PRIVATE KEY, oder es enthält die Header Proc-Type: 4,ENCRYPTED. Die Bibliothek erkennt die Verschlüsselungshülle und weigert sich zu raten: Nötig ist die Passphrase als bytes-Objekt oder ein Schlüssel, der tatsächlich unverschlüsselt ist.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Passphrase als bytes-Objekt übergeben

    Übergib das Passwort über deinen Secret Store, als bytes kodiert; entferne vorsorglich führenden und abschließenden Whitespace.

    python
    import os
    from cryptography.hazmat.primitives.serialization import load_pem_private_key
    
    password = os.environ["KEY_PASSPHRASE"].strip().encode()
    key = load_pem_private_key(pem_bytes, password=password)
  2. 2.

    Oder den Schlüssel einmalig bei der Bereitstellung entschlüsseln

    Kann die Laufzeitumgebung keine Passphrase verwalten, speichere den Schlüssel unverschlüsselt in einem richtigen Secret Manager – ein verschlüsselter Schlüssel, dessen Passwort in derselben env-Datei liegt, bringt keinen Schutz. Und wenn die Passphrase jemals neben dem Schlüssel in einem Repository lag, rotiere den Schlüssel: Ab diesem Moment war die Verschlüsselung nur Dekoration.

    bash
    openssl pkey -in encrypted.pem -out plain.pem
    # (prompts once for the passphrase; protect plain.pem via the secret store)

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen