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.
📋 Table of Contents
- Por que isso acontece
- A melhor solução: atualize suas ferramentas
- Solução alternativa 1: Sinalizador de provedor OpenSSL herdado
- Solução alternativa 2: em scripts package.json (plataforma cruzada)
- Solução alternativa 3: fazer downgrade do Node.js (último recurso)
- Qual abordagem escolher
- Verificando suas versões
- Perguntas Frequentes
- Conclusão
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.
🔗 Share this article
✍️ Leave a Comment