ウェブやアプリ開発者は、日々複数の言語フレームワーク、環境で作業を行うもの。開発ツールは、プロジェクトを次のレベルに引き上げるのに役立ちますが、そんなツールの進展に伴い、時に「ERR_OSSL_EVP_UNSUPPORTED」エラーが生じることがあります。

このエラーが発生する理由は非常にシンプルで、セキュリティソフトウェアの単なる不整合が原因です。そのため、比較的簡単に解決することができます。

この記事では、「ERR_OSSL_EVP_UNSUPPORTED」エラーの概要と原因、3つの異なるシナリオでの解決策を見ていきます。

「ERR_OSSL_EVP_UNSUPPORTED」エラーの解決方法について、動画での解説もご用意しています

「ERR_OSSL_EVP_UNSUPPORTED」エラーとは

このエラーは、開発環境で以下のように表示されます。

「ERR_OSSL_EVP_UNSUPPORTED」エラー(出典: Stackoverflow)
「ERR_OSSL_EVP_UNSUPPORTED」エラー(出典: Stackoverflow

一見すると、「UNSUPPORTED」(非対応)や「ERR」といった単語が目立ちますが、このエラーを正しく理解するには「OSSL」に注目します。

このOSSLタグは、暗号化ソフトウェアであるOpenSSLを表しています。

OpenSSLのウェブサイト
OpenSSLのウェブサイト

OpenSSLはオープンソースのソフトウェアライブラリで、SSL(Secure Sockets Layer)とTLS(Transport Layer Security)プロトコルを使用し、ウェブ開発環境内での安全な通信を保証します。

サイト所有者がサイトにSSL証明書を導入するのと同じように、OpenSSLを使ってウェブサーバーにSSLファイルをインストールすることができます。これによって開発環境の保護を強化することができるため、OpenSSLは広く使用されています。

しかし、OpenSSLは暗号化を行うため、特定のハッシュアルゴリズムに依存します。これらのアルゴリズムがソフトウェアのバージョンごとに更新されていくと、他の開発ツールとの不整合が生じる可能性があります。次のセクションで、エラーの原因をさらに掘り下げてみます。

「ERR_OSSL_EVP_UNSUPPORTED」エラーの原因

OpenSSLと「ERR_OSSL_EVP_UNSUPPORTED」エラーの概要を簡単に押さえたところで、次にその原因が気になります。エラーメッセージが示すように、OpenSSLソフトウェアの「UNSUPPORTED」が関係しています。

言い換えれば、このエラーは、ウェブ開発スタック内の何かが実行中のOpenSSLファイルと互換性がないことを意味しています。

では、なぜこのような互換性の問題が生じるのでしょうか。セキュリティ強化のためにハッシュアルゴリズムが進化すると、その制約が厳しくなり、鍵長が変わることがあります。これによって、OpenSSLのハッシュアルゴリズムが変更されると、開発ツール間で不整合が生じることがあります。

OpenSSL3.0には、多くの改良が導入されていますが、OpenSSL3.0のリリース以降、「ERR_OSSL_EVP_UNSUPPORTED」エラーメッセージが頻繁に報告されるようになりました。

OpenSSL 3.0のリリース発表
OpenSSL 3.0のリリース発表

開発ツールは通常であれば、アップグレードの際に非互換性の問題を解決するはずですが、気づかずにパッケージ、モジュール、フレームワーク、バンドル、環境など、エラーの引き金となる最新でないソフトウェアを使用しているかもしれません。

「ERR_OSSL_EVP_UNSUPPORTED」エラーを解決するには(3つのシナリオ)

古いプログラミングソフトがこのエラーを引き起こしている確率が高いため、解決策として、3つの開発ツールの更新方法をご紹介します。

何らかの理由があり、更新を行いたくない場合には、OpenSSL 3.0のレガシープロバイダを有効にすることでエラーを回避することができます。以下のコマンドを実行するだけでOKです。

--openssl-legacy-provider

そうでなければ、以下の手順でソフトウェアを更新してください。

1. Node.jsのバージョンを更新する

Node.jsは、サーバーサイドアプリケーションやネットワークアプリケーションの構築に使用される、クロスプラットフォームのランタイム環境。JavaScriptの記述が効率化され、改善されるため、人気の高いソフトウェアです。

Node.jsをインストールしているユーザーが非常に多いことから、このエラーは多くの場合、Node.jsで見られます。また、Node.jsのインストールが必須であるAngularNext.jsでも遭遇することがあります。

解決するためには、Node.jsのバージョンを更新することをおすすめします。これには、nodeパッケージマネージャー(npm)を使用します。まだインストールされていない場合は、以下のコマンドでインストール可能です。

npm install -g n

次に、以下のコマンドで、現在のNode.jsのバージョンを確認します。

node -v

最新のバージョンでないことがわかったら、以下のコマンドを入力しましょう。

n latest

これだけで、Node.jsが最新バージョンに更新されます。その後、更新が行われているかを確認するために、上のコマンドで再度バージョンを確認してみてください。これで「ERR_OSSL_EVP_UNSUPPORTED」エラーが解消されるはず。

2. React.jsのバージョンを更新する

Node.jsに並び、React.jsもGatsbyのような多くのウェブ開発ツールに欠かせない存在です。React.jsのバージョンを更新する方法も見ていきます。

npmまたはyarnパッケージマネージャーを使用します。npmの場合は、以下のコマンドを使用してください。

npm install react react-dom

yarnの場合は以下の通り。

yarn add react react-dom

その後、バージョンが適切に更新されているかを確認してください。

3. Vue.jsのバージョンを更新する

Vue.jsも人気の高いフロントエンドJavaScriptフレームワークです。Vueで作業を行なっている際にこのエラーに遭遇することもあります。

Vue.jsについても、npmやyarnを使用してバージョンを更新することができます。まずはいずれかのパッケージマネージャーで、以下のコマンドを使用して現在のバージョンを確認します。

vue --version

npmを使ってVue.jsを更新する場合は、以下のコマンドを使用します。

update -g @vue/cli

yarnを使う場合は、以下の通りです。

global upgrade --latest @vue/cli

なお、どちらのコマンドもグローバルにインストールされたVue CLIパッケージを更新します。

まとめ

開発プロジェクトのセキュリティ強化にOpenSSLを使用している場合、プロジェクト進行を妨げる「ERR_OSSL_EVP_UNSUPPORTED」エラーに遭遇することがあります。幸い、このエラーの解決方法はシンプルです。

開発スタックに応じて、Node.js、React.js、Vue.jsのバージョンを更新することで、エラーを解消することができます。それでもエラーが消えない場合、あるいは更新を行いたくない場合は、--openssl-legacy-providerで解決することも可能です。

Kinstaのような信頼性の高いホスティングサービスを利用すると、このようなエラーに遭遇する可能性が低くなります。問題のトラブルシューティングを24時間年中無休で支援するカスタマーサポートも付帯しているので、安心です。さらに、Node.js専用ホスティングもご用意しています。