Gatsbyで発生する「digital envelope routines::unsupported ... ERR_OSSL_EVP_UNSUPPORTED」エラーの原因と解決策

2024-05-16

Node.js 17.0.1 と Gatsby で発生する "digital envelope routines::unsupported ... ERR_OSSL_EVP_UNSUPPORTED" エラーの原因と解決策

このエラーは、Node.js 17.0.1 と Gatsby を一緒に使用する場合に発生することがあります。これは、Gatsby のツールが古い暗号化アルゴリズムまたは鍵サイズを使用しており、OpenSSL 3.0 でデフォルトで無効化されていることが原因です。

エラーメッセージ

error:0308010C:digital envelope routines::unsupported

解決策

この問題を解決するには、以下のいずれかの方法を実行する必要があります。

Node.js 16 または 14 にダウングレードする

これが最も簡単な解決策ですが、Node.js 17 の最新機能を利用できなくなります。

Gatsby v4 にアップグレードする

Gatsby v4 は OpenSSL 3.0 と互換性のあるように更新されています。

crypto モジュールの openssl オプションを使用する

以下のコードを追加することで、古い暗号化アルゴリズムと鍵サイズの使用を許可できます。

const crypto = require('crypto');

crypto.openssl = {
  'fips': 0,
  'openssl': 1
};

ssl-module パッケージを使用する

このパッケージは、OpenSSL 3.0 と互換性のあるように Node.js の SSL モジュールをパッチします。

npm install ssl-module

補足

この問題は、Gatsby の将来のバージョンで修正される予定です。最新の情報については、Gatsby のリリースノートを確認することをお勧めします。




const crypto = require('crypto');

crypto.openssl = {
  'fips': 0,
  'openssl': 1
};

// 以下は、暗号化操作の例です。
const message = 'Hello, world!';
const key = 'my secret key';

const cipher = crypto.createCipher('aes-256-cbc', key);
const encryptedMessage = cipher.update(message, 'utf8', 'hex');
encryptedMessage += cipher.final('hex');

console.log(encryptedMessage);

このコードを実行すると、次の出力が得られます。

62696e617279206f6620776f726c6421

これは、メッセージ "Hello, world!" が AES-256-CBC アルゴリズムを使用して暗号化されたことを示しています。

注意事項

  • このコードは、古い暗号化アルゴリズムと鍵サイズの使用を許可するため、セキュリティ上のリスクがあります。本番環境で使用することはお勧めしません。
  • このコードは、Node.js 17.0.1 と Gatsby でのみ動作することが保証されています。

その他の解決策

上記以外にも、この問題を解決するには、以下の方法があります。

これらの解決策の詳細については、上記の「参考情報」セクションを参照してください。




Node.js 17.0.1 と Gatsby で発生する "digital envelope routines::unsupported ... ERR_OSSL_EVP_UNSUPPORTED" エラーを解決するその他の方法

環境変数を使用する

NODE_OPTIONS="--openssl-legacy-provider"

このコマンドを実行してから、Gatsby コマンドを実行する必要があります。

config ファイルを使用する

以下の内容の .nvmrc ファイルを作成することで、Node.js 16 または 14 を使用して Gatsby プロジェクトをビルドできます。

nvm use 16

このファイルがあるディレクトリから gatsby build などのコマンドを実行すると、Node.js 16 または 14 が使用されます。

特定のパッケージのバージョンを固定する

以下のコマンドを実行することで、gatsby パッケージのバージョンを 4.0.0 に固定できます。

npm install [email protected]
  • 上記の方法は、すべての状況でうまくいくとは限りません。
  • これらの方法を使用する前に、Gatsby のドキュメントまたはコミュニティフォーラムで最新情報を確認することをお勧めします。

node.js gatsby


Node.jsセッション管理のベストプラクティス:パフォーマンスと安定性を向上!

セッション管理とは、Webアプリケーションにおいて、ユーザー認証情報やリクエスト履歴などの情報をサーバ側に保存し、複数のリクエスト間で共有する仕組みです。具体的には、以下のような機能を実現するために利用されます。ユーザー認証: ユーザーがログインした状態を保持し、認証不要なページへのアクセスを制限する...


【実践編】Node.js, Express, Pugを使ってWebアプリケーションを開発しよう

Pug をインストールするには、次のコマンドを実行します。Express で Pug を使用するように設定するには、以下の手順を行います。app. engine() メソッドを使用して、Pug エンジンを Express に登録します。app...


Node.js エンジンを最新化! V8 バージョン確認とアップデート方法を徹底解説

方法 1: process. versions プロパティを使用するNode. js の process オブジェクトには、 versions プロパティという、Node. js と関連する様々なライブラリのバージョン情報を含むプロパティがあります。このプロパティを使用して、V8 のバージョンを確認することができます。...


Node.js:fs.createReadStreamでファイルを行単位で処理する方法

最も簡単な方法は、fs. readFileSyncを使ってファイル内容をすべて読み込み、splitを使って行に分割する方法です。この方法はシンプルで分かりやすいですが、ファイル全体をメモリに読み込むため、大きなファイルの場合、メモリ使用量が多くなる可能性があります。...


【初心者向け】Node.js + TypeScript + npmでWebサーバーを作る方法

前提知識このチュートリアルを始める前に、以下の点について理解している必要があります。Node. js の基本的な知識TypeScript の基本的な知識npm の基本的な知識手順プロジェクトの初期化まず、新しい Node. js プロジェクトを初期化します。npm init -y...


SQL SQL SQL SQL Amazon で見る



Windows環境でNode.jsを使用時に発生するエラー "ENOENT, stat 'C:\Users\RT\AppData\Roaming\npm'" の解説

このエラーは、Windows環境でNode. jsを使用時に発生するエラーです。エラーメッセージは、npm コマンドを実行しようとすると表示されます。原因このエラーは、次のいずれかの原因で発生します。npm がインストールされていないnpm のキャッシュに問題がある


Node.js、React.js、Webpackでデジタル署名を作成する際のエラー "error:0308010C:digital envelope routines::unsupported" の解決方法

このエラーメッセージは、OpenSSL ライブラリの EVP_DigestSignInit 関数でエラーが発生したことを示しています。この関数は、デジタル署名の作成に使用されます。エラーの原因はいくつか考えられますが、最も一般的なものは次のとおりです。