🌐 Detecting your location…

So beheben Sie den Fehler ERR_OSSL_EVP_UNSUPPORTED in Node.js

⏱️5 min read  ·  886 words

Der FehlerFehler:0308010C:digitale Umschlagroutinen::nicht unterstützt (ERR_OSSL_EVP_UNSUPPORTED) in Node.js erscheint normalerweise beim Erstellen älterer Projekte (oft mit Webpack) auf neueren Node.js-Versionen. Die Ursache liegt darin, dass OpenSSL 3 die Unterstützung für ältere Algorithmen entfernt. Hier erfahren Sie, wie Sie das Problem richtig beheben.

Warum das passiert

Node.js 17+ bündelt OpenSSL 3, das aus Sicherheitsgründen bestimmte ältere Algorithmen (wie das ältere MD4-basierte Hashing) deaktiviert hat. Ältere Versionen von Webpack und einigen anderen Tools verwendeten diese jetzt nicht mehr unterstützten Algorithmen intern (für Modul-Hashing). Wenn sie den entfernten Algorithmus aufrufen, löst OpenSSL 3 ERR_OSSL_EVP_UNSUPPORTED aus. Es handelt sich um eine Kompatibilitätslücke zwischen alten Tools und neuem OpenSSL.

Die beste Lösung: Aktualisieren Sie Ihre Werkzeuge

# The real fix is updating the tool that uses the legacy algorithm.
# For Webpack (the most common cause):
npm install webpack@latest webpack-cli@latest

# Newer Webpack (5.61+) uses a supported hashing algorithm.
# Also update related tools:
npm install react-scripts@latest   # if using Create React App
npm update                          # update dependencies generally

Ein Update auf aktuelle Tool-Versionen ist die richtige Lösung – sie verwenden OpenSSL 3-kompatible Algorithmen. Die folgenden Problemumgehungen sind temporäre Brücken, wenn Sie nicht sofort aktualisieren können.

Problemumgehung 1: Legacy-OpenSSL-Anbieter-Flag

# Set the NODE_OPTIONS environment variable to re-enable legacy algorithms

# macOS/Linux
export NODE_OPTIONS=--openssl-legacy-provider
npm run build

# Windows (Command Prompt)
set NODE_OPTIONS=--openssl-legacy-provider

# Windows (PowerShell)
$env:NODE_OPTIONS="--openssl-legacy-provider"

Problemumgehung 2: In package.json-Skripten (plattformübergreifend)

// Add the flag directly to your scripts
{
  "scripts": {
    "build": "NODE_OPTIONS=--openssl-legacy-provider webpack",
    "start": "NODE_OPTIONS=--openssl-legacy-provider webpack serve"
  }
}

// For cross-platform (Windows + Unix), use cross-env:
// npm install --save-dev cross-env
{
  "scripts": {
    "build": "cross-env NODE_OPTIONS=--openssl-legacy-provider webpack"
  }
}

Problemumgehung 3: Node.js herunterstufen (letzter Ausweg)

# If updating tooling isn't possible, use an older Node version
# with OpenSSL 1.1 (Node 16 or earlier)

# With nvm:
nvm install 16
nvm use 16
npm run build

# This is a temporary measure - Node 16 is old. Prefer updating
# your tooling to work with modern Node/OpenSSL.

Welchen Ansatz soll ich wählen

Situation Bester Ansatz
Kann Abhängigkeiten aktualisieren Webpack/Tools aktualisieren (richtige Korrektur)
Muss jetzt funktionieren, wird später behoben –openssl-legacy-provider Flag
Abhängigkeiten können nicht berührt werden Legacy-Flag oder Downgrade-Knoten
Altes Projekt, kann nicht aktualisiert werden Downgrade-Knoten (vorübergehend)

Mit der Flag des Legacy-Anbieters lässt sich die Blockierung schnell aufheben, aber die erneute Aktivierung veralteter Algorithmen ist auf lange Sicht nicht ideal. Priorisieren Sie die Aktualisierung Ihrer Werkzeuge, wann immer Sie können.

Überprüfen Ihrer Versionen

# Check your Node.js version (17+ has OpenSSL 3)
node --version

# Check OpenSSL version Node is using
node -e "console.log(process.versions.openssl)"
# 3.x.x means OpenSSL 3 (causes this error with old tools)

# Check Webpack version
npx webpack --version
# 5.61+ handles OpenSSL 3 correctly

Häufig gestellte Fragen

F: Was verursacht diesen Fehler eigentlich?
A: Node.js 17+ verwendet OpenSSL 3, wodurch die Unterstützung für ältere Algorithmen (wie einen alten MD4-basierten Hash) entfernt wurde, die ältere Webpack-Versionen intern für Modul-Hashing verwendeten. Wenn das alte Tool den entfernten Algorithmus aufruft, löst OpenSSL 3 ERR_OSSL_EVP_UNSUPPORTED aus. Es handelt sich um eine Inkompatibilität zwischen alten Tools und dem neuen OpenSSL.

F: Ist das Flag –openssl-legacy-provider sicher?
A: Veraltete Algorithmen, die aus Sicherheitsgründen deaktiviert wurden, werden wieder aktiviert. Es ist ein guter vorübergehender Workaround zum Entsperren eines Builds, aber auf lange Sicht nicht ideal. Aktualisieren Sie lieber Ihre Tools (Webpack), um moderne Algorithmen zu verwenden, anstatt sich auf unbestimmte Zeit auf das Legacy-Flag zu verlassen.

F: Warum wird das Problem durch die Aktualisierung von Webpack behoben?
A: Das neuere Webpack (5.61+) wurde auf Hashing-Algorithmen umgestellt, die von OpenSSL 3 unterstützt werden, sodass der entfernte Legacy-Algorithmus nicht mehr aufgerufen wird. Die Aktualisierung Ihrer Build-Tools auf aktuelle Versionen ist die richtige Lösung – sie sind mit modernen Node.js und OpenSSL kompatibel.

F: Sollte ich Node.js herunterstufen, um das Problem zu beheben?
A: Nur als letzter Ausweg, wenn Sie die Tools nicht aktualisieren können. Knoten 16 (OpenSSL 1.1) vermeidet den Fehler, ist jedoch alt und wird nicht unterstützt. Es ist besser, Ihre Tools zu aktualisieren und auf einer aktuellen Node-Version zu bleiben. Ein Downgrade ist eine temporäre Brücke, keine Lösung.

F: Ich habe Webpack aktualisiert, erhalte aber immer noch die Fehlermeldung. Warum?
A: Ein anderes Tool in Ihrer Build-Kette verwendet möglicherweise den Legacy-Algorithmus (React-Scripts, ein alter Loader usw.). Aktualisieren Sie alle Build-bezogenen Abhängigkeiten, löschen Sie node_modules und installieren Sie es erneut. Wenn es weiterhin besteht, verwenden Sie vorübergehend das Legacy-Flag, während Sie ermitteln, welche Abhängigkeit aktualisiert werden muss.

Fazit

ERR_OSSL_EVP_UNSUPPORTED (Digital Envelope Routines::unsupported) tritt auf, wenn ältere Tools (normalerweise Webpack) Legacy-Algorithmen aufrufen, die OpenSSL 3 (im Knoten 17+ gebündelt) aus Sicherheitsgründen entfernt hat. Die richtige Lösung istAktualisieren Ihrer Tools (npm install webpack@latestund zugehörige Build-Abhängigkeiten) zu Versionen, die OpenSSL 3-kompatible Algorithmen verwenden. Um die Blockierung schnell und vorübergehend aufzuheben, verwenden Sie--openssl-legacy-provider Flag über NODE_OPTIONS (mit Cross-Env für plattformübergreifende Skripte), aber betrachten Sie es als Brücke, nicht als dauerhafte Lösung. Ein Downgrade von Node.js funktioniert, Sie behalten aber weiterhin alte, nicht unterstützte Versionen. Priorisieren Sie die Aktualisierung Ihrer Build-Tools, damit sie mit modernen Node.js funktionieren – das Legacy-Flag aktiviert veraltete Algorithmen wieder und sollte nicht langfristig verwendet werden.

MD Rafikul Islam

Written by

MD Rafikul Islam is a software developer and the editor of TechPulse. He writes about developer tooling, hardware, and the practical decisions that come up in day-to-day engineering work — which laptop to buy, which framework to commit to, why a build broke at 2am. He tests the tools he writes about and says plainly when something is not worth the money. Corrections and corrections requests are welcome at rony.yf25@gmail.com.

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇬🇧 English🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা