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.
📋 Table of Contents
- Warum das passiert
- Die beste Lösung: Aktualisieren Sie Ihre Werkzeuge
- Problemumgehung 1: Legacy-OpenSSL-Anbieter-Flag
- Problemumgehung 2: In package.json-Skripten (plattformübergreifend)
- Problemumgehung 3: Node.js herunterstufen (letzter Ausweg)
- Welchen Ansatz soll ich wählen
- Überprüfen Ihrer Versionen
- Häufig gestellte Fragen
- Fazit
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.
🔗 Share this article
✍️ Leave a Comment