When working with Node.js, developers may encounter various errors that can disrupt the smooth execution of their applications.
One such error is “error:0308010C:digital envelope routines::unsupported“.
The error presents something like this:

This error typically occurs when attempting to use cryptographic functions or handle digital envelopes that are not supported by the underlying OpenSSL library.
Breaking Changes in NodeJS version 17
Starting from Node.js v17, a breaking change was introduced where certain deprecated and insecure features were removed or disabled by default. So Node.js v17 uses OpenSSL version 3 by default.
This change aims to improve security and align with industry standards.
As a result, if your code relies on deprecated or insecure cryptographic algorithms or methods, you may encounter the “error:0308010C:digital envelope routines::unsupported” error.
To address this, consider the following solution:
Update Code to Use Secure Algorithms: Review your code and ensure that you are using secure and recommended cryptographic algorithms. Refer to the Node.js documentation and cryptographic best practices to identify and update any deprecated or insecure methods in your code.
Why “error:0308010C:digital envelope routines::unsupported” Occurs
The “error:0308010C:digital envelope routines::unsupported” error is an indication that the cryptographic operation being performed is not supported by the OpenSSL library used by Node.js.
This error occurs when trying to use unsupported features, algorithms, or encryption methods, resulting in the failure of the operation.
Understanding the underlying cause is crucial in order to implement the correct solution.
Common Causes of the Error:
Several factors can lead to the “error:0308010C:digital envelope routines::unsupported” error. Some common causes include:
- Outdated OpenSSL Version: The error may occur if you are using an outdated version of the OpenSSL library that does not support the specific cryptographic operation or algorithm being used.
- Unsupported Encryption Algorithm: Certain encryption algorithms may not be supported by the OpenSSL library in use, leading to the error when attempting to use them.
- Incompatibility with External Libraries: If your Node.js application relies on external libraries or modules that use cryptographic operations, it’s possible that they are incompatible with the OpenSSL library, resulting in the error.
Solutions to the Error
To resolve the “error:0308010C:digital envelope routines::unsupported” error, consider the following solutions:
Use --openssl-legacy-provider
flag
Using the --openssl-legacy-provider
flag is another potential solution to address the “error:0308010C:digital envelope routines::unsupported” error in Node.js.
This flag allows you to use the legacy OpenSSL provider, which can help resolve compatibility issues with certain cryptographic operations or algorithms.
To use the --openssl-legacy-provider
flag, follow these steps:
- Open your command prompt or terminal.
- Run your Node.js application with the following command:
node --openssl-legacy-provider your_app.js
Replace your_app.js
with the actual filename of your Node.js application.
By specifying the --openssl-legacy-provider
flag, you instruct Node.js to utilize the legacy OpenSSL provider, which may support the cryptographic features required by your code.
However, it’s important to note that the legacy provider may have security implications, as it might not receive the latest updates and patches.
Therefore, this solution should be used cautiously and only if necessary. It’s recommended to consider updating your code or using alternative secure cryptographic libraries whenever possible.
Remember to stay informed about the latest updates and security best practices regarding cryptographic operations in Node.js to ensure the long-term stability and security of your application.
Downgrade Nodejs to version 16 (v16)
Another solution to address the “error:0308010C:digital envelope routines::unsupported” error is to consider downgrading Node.js to a version where the unsupported features or breaking changes are not present.
By reverting to an earlier version that supports the cryptographic algorithms or methods used in your code, you can avoid encountering the error.
However, it’s important to note that downgrading Node.js should be approached with caution, as it may impact other aspects of your application and potentially introduce security vulnerabilities.
Therefore, it is advisable to exhaust other solutions, such as updating your code and adopting secure algorithms, before considering a downgrade.
Other solutions include:
- Update OpenSSL: Ensure that you have the latest version of the OpenSSL library installed. Update Node.js if necessary, as newer versions often come bundled with updated OpenSSL libraries.
- Check Algorithm Compatibility: Verify that the encryption algorithm or operation you are using is supported by the OpenSSL library. Consult the OpenSSL documentation or the documentation of any relevant libraries to ensure compatibility.
- Use Alternative Libraries: If the error persists, consider using alternative cryptographic libraries or modules that are compatible with your desired encryption methods. For example, you can explore libraries like
crypto-js
orbcrypt
that provide alternative cryptographic implementations. - Verify Library Compatibility: If you are using external libraries or modules, ensure they are compatible with the version of Node.js and the OpenSSL library you are using. Check for any known issues or updates related to the library in question.
Example of successful usage:
const crypto = require('crypto');
try {
// Perform cryptographic operation using unsupported algorithm
const cipher = crypto.createCipher('unsupportedAlgorithm', 'secretKey');
const encryptedData = cipher.update('plaintext', 'utf8', 'hex');
const finalEncryptedData = encryptedData + cipher.final('hex');
console.log(finalEncryptedData);
} catch (error) {
console.error(`Error: ${error}`);
}
Final Thoughts
The “error:0308010C:digital envelope routines::unsupported” error in Node.js can disrupt cryptographic operations when using unsupported features or algorithms.
By understanding the causes and following the solutions outlined in this article, developers can effectively troubleshoot and resolve this error.
Whether it involves updating the OpenSSL library, checking algorithm compatibility, using alternative libraries, or ensuring compatibility with

Abhinav worked as a software engineer at numerous startups and large enterprises for over 12 years. He has worked on a variety of projects, from developing software to designing hardware. He is passionate about tinkering with computers and learning new things. He is always looking for new ways to use technology to solve problems and make people’s lives easier. That is the inspiration behind https://foxrunsoftware.net. Abhinav created FoxRunSoftware to address common errors and issues faced by engineers and non-engineers alike!