Gatsbyで発生する「digital envelope routines::unsupported ... ERR_OSSL_EVP_UNSUPPORTED」エラーの原因と解決策
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