Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Investigate loading legacy provider with OpenSSL 3.0 #40455

Closed
danbev opened this issue Oct 14, 2021 · 8 comments
Closed

Investigate loading legacy provider with OpenSSL 3.0 #40455

danbev opened this issue Oct 14, 2021 · 8 comments
Labels
openssl Issues and PRs related to the OpenSSL dependency.

Comments

@danbev
Copy link
Contributor

danbev commented Oct 14, 2021

I though it would be possible to enable it but updating openssl.cnf like this:

[openssl_init]                                                                  
providers = provider_sect                                                       
                                                                                
# List of providers to load                                                     
[provider_sect]                                                                 
default = default_sect                                                          
legacy = legacy_sect  

[default_sect]                                                                  
activate = 1                                                                    
                                                                                
[legacy_sect]                                                                   
activate = 1

But that does not work:

$ env OPENSSL_CONF=out/Release/obj.target/deps/openssl/openssl.cnf ./node -p 'crypto.createHash("md4")'
node:internal/crypto/hash:67
  this[kHandle] = new _Hash(algorithm, xofLen);
                  ^

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:130:10)
    at [eval]:1:8
    at Script.runInThisContext (node:vm:129:12)
    at Object.runInThisContext (node:vm:305:38)
    at node:internal/process/execution:81:19
    at [eval]-wrapper:6:22
    at evalScript (node:internal/process/execution:80:60)
    at node:internal/main/eval_string:27:3 {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

This issue should take a closer look at how the legacy provider can be enabled.

Refs: #40119 (comment)

@richardlau
Copy link
Member

@danbev It looks like we don't build at least legacyprov.c (maybe some others?). This doesn't appear to work but might be a start:

diff --git a/deps/openssl/config/archs/linux-x86_64/asm/openssl.gypi b/deps/openssl/config/archs/linux-x86_64/asm/openssl.gypi
index 46cc9b2b4a..13b6d6eb96 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm/openssl.gypi
+++ b/deps/openssl/config/archs/linux-x86_64/asm/openssl.gypi
@@ -775,6 +775,7 @@
       'openssl/engines/e_padlock.c',
       'openssl/providers/baseprov.c',
       'openssl/providers/defltprov.c',
+      'openssl/providers/legacyprov.c',
       'openssl/providers/nullprov.c',
       'openssl/providers/prov_running.c',
       'openssl/providers/common/der/der_rsa_sig.c',
diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/openssl.gypi b/deps/openssl/config/archs/linux-x86_64/asm_avx2/openssl.gypi
index cb90c57338..4f5a640dd8 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/openssl.gypi
+++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/openssl.gypi
@@ -775,6 +775,7 @@
       'openssl/engines/e_padlock.c',
       'openssl/providers/baseprov.c',
       'openssl/providers/defltprov.c',
+      'openssl/providers/legacyprov.c',
       'openssl/providers/nullprov.c',
       'openssl/providers/prov_running.c',
       'openssl/providers/common/der/der_rsa_sig.c',

@danbev
Copy link
Contributor Author

danbev commented Oct 14, 2021

@richardlau Thanks, I'll take a look. These gypi files are generated and perhaps we are missing, or reading the wrong source list from configdata.pm.

@Mesteery Mesteery added the openssl Issues and PRs related to the OpenSSL dependency. label Oct 14, 2021
danbev added a commit to danbev/node that referenced this issue Oct 15, 2021
This commit adds a missing OpenSSL 3.0 source file, legacyprov.c.

Refs: nodejs#40455
danbev added a commit to danbev/node that referenced this issue Oct 15, 2021
This commit adds a configuration time flag to enable OpenSSL legacy
module to be built.

For example, the following will build the legacy module:

$ ./configure --openssl-legacy-module

To enable the default provider one has currently has to update the
OpenSSL configuration file, openssl.cnf:

[openssl_init]
providers = provider_sect

[provider_sect]
default = default_sect
legacy = legacy_sect

[default_sect]
activate = 1

[legacy_sect]
activate = 1

This module can then be used by specifying the environment variable
OPENSSL_MODULES like this:

$ env OPENSSL_MODULES= \
$PWD/out/Release/obj.target/deps/openssl/lib/openssl-modules \
OPENSSL_CONF=out/Release/obj.target/deps/openssl/openssl.cnf \
./node -p 'crypto.createHash("md4")'
Hash {
  _options: undefined,
  [Symbol(kHandle)]: Hash {},
  [Symbol(kState)]: { [Symbol(kFinalized)]: false }

Refs: nodejs#40455
@richardlau
Copy link
Member

richardlau commented Oct 15, 2021

FWIW This hack appears to allow the legacy provider to be statically compiled and loaded:

diff --git a/deps/openssl/config/archs/linux-x86_64/asm/openssl.gypi b/deps/openssl/config/archs/linux-x86_64/asm/openssl.gypi
index 46cc9b2b4a..13b6d6eb96 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm/openssl.gypi
+++ b/deps/openssl/config/archs/linux-x86_64/asm/openssl.gypi
@@ -775,6 +775,7 @@
       'openssl/engines/e_padlock.c',
       'openssl/providers/baseprov.c',
       'openssl/providers/defltprov.c',
+      'openssl/providers/legacyprov.c',
       'openssl/providers/nullprov.c',
       'openssl/providers/prov_running.c',
       'openssl/providers/common/der/der_rsa_sig.c',
diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/openssl.gypi b/deps/openssl/config/archs/linux-x86_64/asm_avx2/openssl.gypi
index cb90c57338..4f5a640dd8 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/openssl.gypi
+++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/openssl.gypi
@@ -775,6 +775,7 @@
       'openssl/engines/e_padlock.c',
       'openssl/providers/baseprov.c',
       'openssl/providers/defltprov.c',
+      'openssl/providers/legacyprov.c',
       'openssl/providers/nullprov.c',
       'openssl/providers/prov_running.c',
       'openssl/providers/common/der/der_rsa_sig.c',
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/openssl.gypi b/deps/openssl/config/archs/linux-x86_64/no-asm/openssl.gypi
index 647092c410..279a4d27c3 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/openssl.gypi
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/openssl.gypi
@@ -782,6 +782,7 @@
       'openssl/engines/e_padlock.c',
       'openssl/providers/baseprov.c',
       'openssl/providers/defltprov.c',
+      'openssl/providers/legacyprov.c',
       'openssl/providers/nullprov.c',
       'openssl/providers/prov_running.c',
       'openssl/providers/common/der/der_rsa_sig.c',
diff --git a/deps/openssl/openssl.gyp b/deps/openssl/openssl.gyp
index 4d4e6f2801..d178ffaa61 100644
--- a/deps/openssl/openssl.gyp
+++ b/deps/openssl/openssl.gyp
@@ -29,6 +29,7 @@
         # is able to create a malicious DLL in one of the default search paths.
         'OPENSSL_NO_HW',
         'OPENSSL_API_COMPAT=0x10100001L',
+       'STATIC_LEGACY',
         #'OPENSSL_NO_DEPRECATED',
       ],
       'conditions': [
diff --git a/src/crypto/crypto_util.cc b/src/crypto/crypto_util.cc
index 7e0c8ba3eb..c1fe6fb6ac 100644
--- a/src/crypto/crypto_util.cc
+++ b/src/crypto/crypto_util.cc
@@ -170,6 +170,16 @@ void InitCryptoOnce() {
   ENGINE_load_builtin_engines();
 #endif  // !OPENSSL_NO_ENGINE

+#if OPENSSL_VERSION_MAJOR >= 3
+  // Put behind a flag?
+  {
+    OSSL_PROVIDER* legacy_provider = OSSL_PROVIDER_load(nullptr, "legacy");
+    if (legacy_provider == nullptr) {
+      fprintf(stderr, "Unable to load legacy provider.\n");
+    }
+  }
+#endif
+
   NodeBIO::GetMethod();
 }
$ ./node -p 'crypto.createHash("md4")'
Hash {
  _options: undefined,
  [Symbol(kHandle)]: Hash {},
  [Symbol(kState)]: { [Symbol(kFinalized)]: false }
}
$

I'm not entirely sure how to get legacyprov.c into gyp via the generating scripts. We'd probably want to put some CLI flag around the loading of the provider (we probably can't assume it's available if linking to an shared openssl) or maybe enablement could be via modifying the openssl config file.

danbev added a commit to danbev/node that referenced this issue Oct 16, 2021
This commit adds a configuration time flag to enable OpenSSL legacy
module to be built.

For example, the following will build the legacy module:

$ ./configure --openssl-legacy-module

To enable the default provider one has currently has to update the
OpenSSL configuration file, openssl.cnf:

[openssl_init]
providers = provider_sect

[provider_sect]
default = default_sect
legacy = legacy_sect

[default_sect]
activate = 1

[legacy_sect]
activate = 1

This module can then be used by specifying the environment variable
OPENSSL_MODULES like this:

$ env OPENSSL_MODULES= \
$PWD/out/Release/obj.target/deps/openssl/lib/openssl-modules \
OPENSSL_CONF=out/Release/obj.target/deps/openssl/openssl.cnf \
./node -p 'crypto.createHash("md4")'
Hash {
  _options: undefined,
  [Symbol(kHandle)]: Hash {},
  [Symbol(kState)]: { [Symbol(kFinalized)]: false }

Refs: nodejs#40455
danbev added a commit to danbev/node that referenced this issue Oct 16, 2021
This commit adds an option to Node.js named --openssl-legacy-module and
if specified will load OpenSSL 3.0 Legacy provider.

$ ./node --help
...
--openssl-legacy-module  enable OpenSSL 3.0 legacy module

Example usage:

$ ./node --openssl-legacy-module  -p 'crypto.createHash("md4")'
Hash {
  _options: undefined,
  [Symbol(kHandle)]: Hash {},
  [Symbol(kState)]: { [Symbol(kFinalized)]: false }
}

Co-authored-by: Richard Lau <rlau@redhat.com>

Refs: nodejs#40455
@danbev
Copy link
Contributor Author

danbev commented Oct 16, 2021

This sounds good to me and if we can do that and not have to mess around with openssl.cnf that is great.

I'm not entirely sure how to get legacyprov.c into gyp via the generating scripts.

Yeah, I was not sure about this either. We need to add this to generate_gypi.pl. The easiest way to try this out it to update that file and then run make linux-x86-64 (or use the arch you are on). After that you can inspect the generated archs/linux-x86_64/asm/openssl.gypi. If that looks good one can try to build node with this and see that it works before generating all the arch files which takes a while.

I've opened a pull request based on your suggestion: #40478. I've added you as Co-author which I hope is alright.

danbev added a commit to danbev/node that referenced this issue Oct 18, 2021
This commit adds an option to Node.js named --openssl-legacy-provider
and if specified will load OpenSSL 3.0 Legacy provider.

$ ./node --help
...
--openssl-legacy-provider  enable OpenSSL 3.0 legacy provider

Example usage:

$ ./node --openssl-legacy-provider  -p 'crypto.createHash("md4")'
Hash {
  _options: undefined,
  [Symbol(kHandle)]: Hash {},
  [Symbol(kState)]: { [Symbol(kFinalized)]: false }
}

Co-authored-by: Richard Lau <rlau@redhat.com>

Refs: nodejs#40455
danbev added a commit that referenced this issue Oct 18, 2021
This commit add the missing legacy provider source code which is
requried for statically linking the OpenSSL legacy provider.

Co-authored-by: Richard Lau <rlau@redhat.com>

PR-URL: #40478
Refs: #40455
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
danbev added a commit that referenced this issue Oct 18, 2021
Co-authored-by: Richard Lau <rlau@redhat.com>

PR-URL: #40478
Refs: #40455
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
danbev added a commit that referenced this issue Oct 18, 2021
This commit adds an option to Node.js named --openssl-legacy-provider
and if specified will load OpenSSL 3.0 Legacy provider.

$ ./node --help
...
--openssl-legacy-provider  enable OpenSSL 3.0 legacy provider

Example usage:

$ ./node --openssl-legacy-provider  -p 'crypto.createHash("md4")'
Hash {
  _options: undefined,
  [Symbol(kHandle)]: Hash {},
  [Symbol(kState)]: { [Symbol(kFinalized)]: false }
}

Co-authored-by: Richard Lau <rlau@redhat.com>

Refs: #40455
PR-URL: #40478
Refs: #40455
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
unflxw added a commit to appsignal/appsignal-nodejs that referenced this issue Oct 26, 2021
Modify the build matrix to add Node 17 to the environments under
test. The GCC setup from Node 16 is reused here.

As a workaround for a bug caused by Node 17 switching to
OpenSSL 3, we add the `--openssl-legacy-provider` option to the
`NODE_OPTIONS` environment variable. See [this node issue][node]
and [this webpack issue][webpack] for details.

[node]: nodejs/node#40455
[webpack]: webpack/webpack#14532
unflxw added a commit to appsignal/appsignal-nodejs that referenced this issue Oct 26, 2021
Modify the build matrix to add Node 17 to the environments under
test. The GCC setup from Node 16 is reused here.

As a workaround for a bug caused by Node 17 switching to
OpenSSL 3, we add the `--openssl-legacy-provider` option to the
`NODE_OPTIONS` environment variable. See [this node issue][node]
and [this webpack issue][webpack] for details.

[node]: nodejs/node#40455
[webpack]: webpack/webpack#14532
unflxw added a commit to appsignal/appsignal-nodejs that referenced this issue Oct 26, 2021
Modify the build matrix to add Node 17 to the environments under
test. The GCC setup from Node 16 is reused here.

As a workaround for a bug caused by Node 17 switching to
OpenSSL 3, we add the `--openssl-legacy-provider` option to the
`NODE_OPTIONS` environment variable. See [this node issue][node]
and [this webpack issue][webpack] for details.

[node]: nodejs/node#40455
[webpack]: webpack/webpack#14532
@danbev danbev closed this as completed Oct 27, 2021
Iskren1990 pushed a commit to Iskren1990/abrites-vue-ui that referenced this issue Feb 5, 2022
danbev added a commit to danbev/node that referenced this issue Jun 23, 2022
This commit adds an option to Node.js named --openssl-legacy-provider
and if specified will load OpenSSL 3.0 Legacy provider when dynamically
linking Node.js v16.x with OpenSSL 3.0.

Building:
$ ./configure --shared-openssl \
 --shared-openssl-libpath=/path/openssl_quic-3.0/lib64 \
 --shared-openssl-includes=/path/openssl_quic-3.0/include \
 --shared-openssl-libname=crypto,ssl
$ make -j8

Verify options is available:
$ ./node --help
...
--openssl-legacy-provider  enable OpenSSL 3.0 legacy provider

Usage:
$ export LD_LIBRARY_PATH=/path/openssl_quic-3.0/lib64
$ export OPENSSL_MODULES=/path/openssl_quic-3.0/lib64/ossl-modules/
$ export OPENSSL_CONF=/path/openssl_quic-3.0/ssl/openssl.cnf
$ ./node --openssl-legacy-provider  -p 'crypto.createHash("md4")'
Hash {
  _options: undefined,
  [Symbol(kHandle)]: Hash {},
  [Symbol(kState)]: { [Symbol(kFinalized)]: false }
}

Fixes: nodejs#40948

Refs: nodejs#40455
PR-URL: nodejs#40478
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
targos pushed a commit that referenced this issue Jul 18, 2022
This commit adds an option to Node.js named --openssl-legacy-provider
and if specified will load OpenSSL 3.0 Legacy provider when dynamically
linking Node.js v16.x with OpenSSL 3.0.

Building:
$ ./configure --shared-openssl \
 --shared-openssl-libpath=/path/openssl_quic-3.0/lib64 \
 --shared-openssl-includes=/path/openssl_quic-3.0/include \
 --shared-openssl-libname=crypto,ssl
$ make -j8

Verify options is available:
$ ./node --help
...
--openssl-legacy-provider  enable OpenSSL 3.0 legacy provider

Usage:
$ export LD_LIBRARY_PATH=/path/openssl_quic-3.0/lib64
$ export OPENSSL_MODULES=/path/openssl_quic-3.0/lib64/ossl-modules/
$ export OPENSSL_CONF=/path/openssl_quic-3.0/ssl/openssl.cnf
$ ./node --openssl-legacy-provider  -p 'crypto.createHash("md4")'
Hash {
  _options: undefined,
  [Symbol(kHandle)]: Hash {},
  [Symbol(kState)]: { [Symbol(kFinalized)]: false }
}

Fixes: #40948

Refs: #40455
PR-URL: #40478
Backport-PR-URL: #42972
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
targos pushed a commit that referenced this issue Jul 31, 2022
This commit adds an option to Node.js named --openssl-legacy-provider
and if specified will load OpenSSL 3.0 Legacy provider when dynamically
linking Node.js v16.x with OpenSSL 3.0.

Building:
$ ./configure --shared-openssl \
 --shared-openssl-libpath=/path/openssl_quic-3.0/lib64 \
 --shared-openssl-includes=/path/openssl_quic-3.0/include \
 --shared-openssl-libname=crypto,ssl
$ make -j8

Verify options is available:
$ ./node --help
...
--openssl-legacy-provider  enable OpenSSL 3.0 legacy provider

Usage:
$ export LD_LIBRARY_PATH=/path/openssl_quic-3.0/lib64
$ export OPENSSL_MODULES=/path/openssl_quic-3.0/lib64/ossl-modules/
$ export OPENSSL_CONF=/path/openssl_quic-3.0/ssl/openssl.cnf
$ ./node --openssl-legacy-provider  -p 'crypto.createHash("md4")'
Hash {
  _options: undefined,
  [Symbol(kHandle)]: Hash {},
  [Symbol(kState)]: { [Symbol(kFinalized)]: false }
}

Fixes: #40948

Refs: #40455
PR-URL: #40478
Backport-PR-URL: #42972
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
algitbot pushed a commit to alpinelinux/aports that referenced this issue Aug 2, 2022
use nodejs 17, which supports --openssl-legacy-provider options which
seems to be needed for openssl3. This option is not backported to nodejs
16.

ref: webpack/webpack#14532
ref: nodejs/node#40455
guangwong pushed a commit to noslate-project/node that referenced this issue Oct 10, 2022
This commit adds an option to Node.js named --openssl-legacy-provider
and if specified will load OpenSSL 3.0 Legacy provider when dynamically
linking Node.js v16.x with OpenSSL 3.0.

Building:
$ ./configure --shared-openssl \
 --shared-openssl-libpath=/path/openssl_quic-3.0/lib64 \
 --shared-openssl-includes=/path/openssl_quic-3.0/include \
 --shared-openssl-libname=crypto,ssl
$ make -j8

Verify options is available:
$ ./node --help
...
--openssl-legacy-provider  enable OpenSSL 3.0 legacy provider

Usage:
$ export LD_LIBRARY_PATH=/path/openssl_quic-3.0/lib64
$ export OPENSSL_MODULES=/path/openssl_quic-3.0/lib64/ossl-modules/
$ export OPENSSL_CONF=/path/openssl_quic-3.0/ssl/openssl.cnf
$ ./node --openssl-legacy-provider  -p 'crypto.createHash("md4")'
Hash {
  _options: undefined,
  [Symbol(kHandle)]: Hash {},
  [Symbol(kState)]: { [Symbol(kFinalized)]: false }
}

Fixes: nodejs/node#40948

Refs: nodejs/node#40455
PR-URL: nodejs/node#40478
Backport-PR-URL: nodejs/node#42972
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
akawashiro added a commit to akawashiro/jendeley that referenced this issue Dec 31, 2022
tjanez added a commit to oasisprotocol/oasis-wallet-ext that referenced this issue Mar 17, 2023
Node.js 16+ supports dynamically linking with OpenSSL 3.0, however, that
results in 'error:0308010C:digital envelope routines::unsupported' error.

To work-around that with the legacy Webpack 4.0 we use, one needs to
enable the OpenSSL 3.0 Legacy provider by setting:
NODE_OPTIONS=--openssl-legacy-provider

For more info, see:
- webpack/webpack#14532
- nodejs/node#40455
- nodejs/node#40948
buberdds pushed a commit to buberdds/oasis-wallet-ext that referenced this issue Apr 21, 2023
Node.js 16+ supports dynamically linking with OpenSSL 3.0, however, that
results in 'error:0308010C:digital envelope routines::unsupported' error.

To work-around that with the legacy Webpack 4.0 we use, one needs to
enable the OpenSSL 3.0 Legacy provider by setting:
NODE_OPTIONS=--openssl-legacy-provider

For more info, see:
- webpack/webpack#14532
- nodejs/node#40455
- nodejs/node#40948
@Cyclodex
Copy link

Cyclodex commented Apr 28, 2023

cat 'openssl-legacy-provider=true' >> .npmrc

@RobertLowe It should be echo command.

I have added this file to my project, deleted node_modules folder and run yarn install, but still doesn't work

In my case I had some webpack commands which failed

Error: error:0308010C:digital envelope routines::unsupported

and would need an NODE OPTION set for every command/task, which looks ugly:

SET NODE_OPTIONS=--openssl-legacy-provider && SOME_COMMAND...

So I was looking for a solution how to set this "globally" at least per project.
The idea of the .npmrc seems to be good one (and I did not find any other project related possible way to set NODE options), but the above string did not work for me either.

Also openssl-legacy-provider is a node option, and not a npm option. 🤔

After reading the documentation, it seems that we can set node options this way:

So when I add the following to my .npmrc file, it actually works 🥳

node-options="--openssl-legacy-provider"

maybe this helps someone else, migrating from NODE 14/16 to NODE >16

@insteptech
Copy link

insteptech commented Mar 11, 2024

PS D:\Work Area------\admin> ng serve
10% building 4/4 modules 0 active(node:20664) [DEP0111] DeprecationWarning: Access to process.binding('http_parser') is deprecated.
(Use node --trace-deprecation ... to show where the warning was created)
i 「wds」: Project is running at http://localhost:4200/webpack-dev-server/
i 「wds」: webpack output is served from /
i 「wds」: 404s will fallback to //index.html
10% building 4/5 modules 1 active ...es\webpack-dev-server\client\index.js?http://0.0.0.0:0/sockjs-node&sockPath=/sockjs-nodenode:internal/crypto/hash:69
this[kHandle] = new _Hash(algorithm, xofLen);
^

Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:69:19)
at Object.createHash (node:crypto:133:10)
at module.exports (D:\Work Area\nocmitra\admin\node_modules\webpack\lib\util\createHash.js:135:53)
at NormalModule._initBuildHash (D:\Work Area\nocmitra\admin\node_modules\webpack\lib\NormalModule.js:412:16)
at D:\Work Area\nocmitra\admin\node_modules\webpack\lib\NormalModule.js:444:10
at D:\Work Area\nocmitra\admin\node_modules\webpack\lib\NormalModule.js:320:13
at D:\Work Area\nocmitra\admin\node_modules\loader-runner\lib\LoaderRunner.js:367:11
at D:\Work Area\nocmitra\admin\node_modules\loader-runner\lib\LoaderRunner.js:203:19
at VirtualFileSystemDecorator.readFile (D:\Work Area\nocmitra\admin\node_modules@ngtools\webpack\src\virtual_file_system_decorator.js:46:13)
at processResource (D:\Work Area\nocmitra\admin\node_modules\loader-runner\lib\LoaderRunner.js:202:11)
at iteratePitchingLoaders (D:\Work Area\nocmitra\admin\node_modules\loader-runner\lib\LoaderRunner.js:158:10)
at runLoaders (D:\Work Area\nocmitra\admin\node_modules\loader-runner\lib\LoaderRunner.js:365:2)
at NormalModule.doBuild (D:\Work Area\nocmitra\admin\node_modules\webpack\lib\NormalModule.js:292:3)
at NormalModule.build (D:\Work Area\nocmitra\admin\node_modules\webpack\lib\NormalModule.js:438:15)
at Compilation.buildModule (D:\Work Area\nocmitra\admin\node_modules\webpack\lib\Compilation.js:702:10)
at D:\Work Area\nocmitra\admin\node_modules\webpack\lib\Compilation.js:944:14 {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

Node.js v18.19.1

i'm facing this issue in angular , even it's Node v20

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
openssl Issues and PRs related to the OpenSSL dependency.
Projects
None yet
Development

No branches or pull requests

7 participants