Aller au contenu
ecdsa.com
Python 3.13+ ssl modulecryptography (Python)

Message d’erreur

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier

Affiché par Python 3.13 et les versions ultérieures (le mode strict y est activé par défaut) ainsi que par openssl verify -x509_strict. Python ajoute un emplacement dans le code source, comme « (_ssl.c:1082) ».

Python 3.13+ ssl module — VERIFY_X509_STRICT in create_default_context(), X509_V_ERR_MISSING_AUTHORITY_KEY_IDENTIFIER

Ce que cela signifie

Python 3.13+ applique les contrôles X.509 stricts d’OpenSSL, et la RFC 5280 impose aux certificats émis par une AC de porter une extension authorityKeyIdentifier qui désigne la clé de l’émetteur. Un certificat de votre chaîne en est dépourvu : la vérification échoue donc, alors que la signature et l’ancre de confiance sont correctes.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Confirmer l’absence de l’extension

    Affichez les extensions d’identifiant de clé du certificat feuille et des certificats intermédiaires, puis exécutez openssl verify -x509_strict pour lister tous les problèmes du mode strict.

    bash
    openssl x509 -in server.pem -noout -ext authorityKeyIdentifier,subjectKeyIdentifier
    openssl verify -x509_strict -CAfile ca.pem server.pem
  2. 2.

    Réémettre les certificats avec des identifiants de clé

    Ajoutez subjectKeyIdentifier = hash et authorityKeyIdentifier = keyid:always au profil d’émission, puis réémettez les certificats concernés.

    bash
    # Issue leaves with both key identifiers
    printf 'subjectKeyIdentifier=hash\nauthorityKeyIdentifier=keyid:always\nsubjectAltName=DNS:api.example.com\n' > leaf.ext
    openssl x509 -req -in server.csr -CA ca.pem -CAkey ca.key -days 90 -extfile leaf.ext -out server.pem
  3. 3.

    Contournement temporaire : retirer VERIFY_X509_STRICT

    Conserve la vérification de la chaîne, des dates et du nom d’hôte, mais ignore les contrôles de profil RFC 5280 pour ce contexte ; retirez ce contournement une fois les certificats réémis.

    python
    # Temporary workaround until certificates are reissued
    import ssl
    ctx = ssl.create_default_context(cafile="ca.pem")
    ctx.verify_flags &= ~ssl.VERIFY_X509_STRICT

Erreurs associées

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