Aller au contenu
ecdsa.com
Node.js 17+ (OpenSSL 3)Node.js crypto

Message d’erreur

error:0308010C:digital envelope routines::unsupported

Node.js 17+ (OpenSSL 3) — code ERR_OSSL_EVP_UNSUPPORTED

Ce que cela signifie

Du code a demandé à OpenSSL 3 un algorithme que son fournisseur par défaut ne propose plus, le cas le plus célèbre étant MD4, que les anciennes versions de webpack utilisent pour le hachage du build. Node 17 est passé à OpenSSL 3, et les algorithmes de condensat et de chiffrement hérités ont été déplacés dans un fournisseur distinct, « legacy », désactivé par défaut. L’erreur nomme le mécanisme (EVP, la couche d’enveloppe numérique), pas le coupable ; le même code apparaît partout où l’on demande à OpenSSL 3 un algorithme retiré, même si la combinaison webpack sur Node 17+ produit l’écrasante majorité des occurrences.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Mettre à jour la chaîne d’outils (le vrai correctif)

    webpack ≥ 5.61 (et 4.47 dans la branche 4.x) se rabat sur une implémentation WASM de MD4 lorsque OpenSSL ne la fournit plus ; react-scripts 5 intègre cette version. Cela supprime le problème au lieu de le masquer.

    bash
    npm install --save-dev webpack@latest
    # CRA projects:
    npm install --save-dev react-scripts@5
  2. 2.

    Solution provisoire : activer le fournisseur legacy

    Réactive MD4 et consorts pour tout le processus. Acceptable pour débloquer un build aujourd’hui ; n’en faites pas une solution permanente : cela expose de nouveau des algorithmes cassés à tout le code du processus.

    bash
    NODE_OPTIONS=--openssl-legacy-provider npm run build
  3. 3.

    Dans votre propre code, remplacer l’algorithme

    Pour une empreinte non cryptographique, n’importe quel condensat moderne convient ; rien de ce qui vérifie des signatures n’aurait jamais dû reposer sur MD4/MD5.

    js
    // before: createHash("md4")
    import { createHash } from "node:crypto";
    const digest = createHash("sha256").update(data).digest("hex");

Erreurs associées

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