🌐 Detecting your location…

Como corrigir o erro ERR_OSSL_EVP_UNSUPPORTED em Node.js

⏱️5 min read  ·  910 words

O erroerro:0308010C:rotinas de envelope digital::não suportadas (ERR_OSSL_EVP_UNSUPPORTED) em Node.js normalmente aparece ao construir projetos mais antigos (geralmente com Webpack) em versões mais recentes do Node.js. É causado pela remoção do suporte do OpenSSL 3 para algoritmos mais antigos. Veja como consertar isso corretamente.

Por que isso acontece

Node.js 17+ agrupa OpenSSL 3, que desabilitou certos algoritmos legados (como o antigo hashing baseado em MD4) para segurança. Versões mais antigas do Webpack e algumas outras ferramentas usavam esses algoritmos agora não suportados internamente (para hash de módulo). Quando eles chamam o algoritmo removido, o OpenSSL 3 lança ERR_OSSL_EVP_UNSUPPORTED. É uma lacuna de compatibilidade entre as ferramentas antigas e o novo OpenSSL.

A melhor solução: atualize suas ferramentas

# 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

Atualizar para as versões atuais da ferramenta é a solução adequada – eles usam algoritmos compatíveis com OpenSSL 3. As soluções alternativas abaixo são pontes temporárias quando você não pode atualizar imediatamente.

Solução alternativa 1: Sinalizador de provedor OpenSSL herdado

# 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"

Solução alternativa 2: em scripts package.json (plataforma cruzada)

// 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"
  }
}

Solução alternativa 3: fazer downgrade do Node.js (último recurso)

# 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.

Qual abordagem escolher

Situação Melhor abordagem
Pode atualizar dependências Atualizar Webpack/ferramentas (correção adequada)
Preciso que funcione agora, vou consertar mais tarde –openssl-legacy-provider sinalizador
Não é possível mexer nas dependências Sinalizador legado ou nó de downgrade
Projeto antigo, não é possível atualizar Downgrade do nó (temporário)

O sinalizador do provedor legado é um desbloqueio rápido, mas reativar algoritmos obsoletos não é o ideal a longo prazo. Priorize a atualização de suas ferramentas quando puder.

Verificando suas versões

# 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

Perguntas Frequentes

P: O que realmente causa esse erro?
R: Node.js 17+ usa OpenSSL 3, que removeu o suporte para algoritmos legados (como um antigo hash baseado em MD4) que versões mais antigas do Webpack usavam internamente para hash de módulo. Quando a ferramenta antiga chama o algoritmo removido, o OpenSSL 3 lança ERR_OSSL_EVP_UNSUPPORTED. É uma incompatibilidade entre ferramentas antigas e o novo OpenSSL.

P: O sinalizador –openssl-legacy-provider é seguro?
R: Ele reativa algoritmos obsoletos que foram desativados por motivos de segurança. É uma boa solução temporária para desbloquear uma compilação, mas não é ideal a longo prazo. Prefira atualizar suas ferramentas (Webpack) para usar algoritmos modernos em vez de depender do sinalizador legado indefinidamente.

P: Por que atualizar o Webpack corrige isso?
R: O Webpack mais recente (5.61+) mudou para algoritmos de hash suportados pelo OpenSSL 3, portanto, não chama mais o algoritmo legado removido. Atualizar suas ferramentas de construção para as versões atuais é a solução adequada – elas são compatíveis com Node.js e OpenSSL modernos.

P: Devo fazer downgrade do Node.js para corrigir isso?
R: Somente como último recurso se você não conseguir atualizar as ferramentas. O nó 16 (OpenSSL 1.1) evita o erro, mas é antigo e não tem suporte. É melhor atualizar suas ferramentas e permanecer na versão atual do Node. O downgrade é uma ponte temporária, não uma solução.

P: Atualizei o Webpack, mas ainda recebo o erro. Por que?
R: Outra ferramenta em sua cadeia de construção pode usar o algoritmo legado (scripts de reação, um carregador antigo, etc.). Atualize todas as dependências relacionadas à compilação, exclua node_modules e reinstale. Se persistir, use o sinalizador legado temporariamente enquanto identifica qual dependência precisa ser atualizada.

Conclusão

ERR_OSSL_EVP_UNSUPPORTED (rotinas de envelope digital::unsupported) ocorre quando ferramentas mais antigas (geralmente Webpack) chamam algoritmos legados que o OpenSSL 3 (empacotado no Node 17+) removeu por segurança. A correção adequada éatualizando suas ferramentas (npm install webpack@lateste dependências de construção relacionadas) para versões que usam algoritmos compatíveis com OpenSSL 3. Como um desbloqueio temporário rápido, use o--openssl-legacy-provider sinalizar via NODE_OPTIONS (com cross-env para scripts de plataforma cruzada), mas trate-o como uma ponte, não como uma solução permanente. O downgrade do Node.js funciona, mas mantém você em versões antigas e sem suporte. Priorize a atualização de suas ferramentas de construção para funcionar com Node.js moderno – o sinalizador legado reativa algoritmos obsoletos e não deve ser considerado a longo prazo.

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🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা