Aller au contenu
ecdsa.com
Python cryptographycryptography (Python)

Message d’erreur

Password was not given but private key is encrypted

Le cas symétrique existe aussi : « Password was given but private key is not encrypted. » – même appel, discordance inverse (les deux cas ont été reproduits avec cryptography 50.0).

Python cryptography — TypeError from load_pem_private_key

Ce que cela signifie

Vous avez appelé load_pem_private_key(data, password=None) sur une clé chiffrée : son PEM indique ENCRYPTED PRIVATE KEY, ou porte des en-têtes Proc-Type: 4,ENCRYPTED. La bibliothèque voit l’enveloppe de chiffrement et refuse de deviner : il lui faut la phrase de passe sous forme d’objet bytes, ou une clé réellement non chiffrée.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Fournir la phrase de passe sous forme de bytes

    Transmettez le mot de passe depuis votre gestionnaire de secrets, encodé en bytes ; par précaution, retirez les caractères d’espacement en début et en fin.

    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.

    Ou déchiffrer la clé une seule fois, au moment du provisionnement

    Si l’environnement d’exécution ne peut pas gérer de phrase de passe, stockez la clé non chiffrée dans un véritable gestionnaire de secrets : une clé chiffrée dont le mot de passe se trouve dans le même fichier d’environnement n’apporte aucune protection. Et si la phrase de passe a un jour voyagé à côté de la clé dans un dépôt, effectuez une rotation de la clé : dès lors, le chiffrement n’était qu’une façade.

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

Erreurs associées

Parcourir toute la base de données des erreurs de signature