Node.jsでnpmを使う際に発生する「SSL Error: CERT_UNTRUSTED」の解決法とは?

2024-07-27

npmコマンドで「SSL Error: CERT_UNTRUSTED」が発生する原因と解決策

npmコマンドで「SSL Error: CERT_UNTRUSTED」エラーが発生するのは、主に以下の2つの原因が考えられます。

  1. 古いバージョンのNode.jsを使用している

2021年9月以降、古いバージョンのNode.js(8.x以前、または10.x以前)では、証明書の検証方法が変更され、一部の認証局(CA)の証明書を信頼できなくなりました。これが原因で、npmコマンドを実行時に「SSL Error: CERT_UNTRUSTED」エラーが発生することがあります。

  1. ネットワーク環境に問題がある

ファイアウォールやプロキシサーバーなどのネットワーク設定が原因で、npmがレジストリにアクセスできない場合も、このエラーが発生することがあります。

解決策

Node.jsを最新バージョンに更新する

--caオプションを使用する

Node.js 10.x以降を使用している場合は、--caオプションを使用して、信頼できる認証局の証明書ファイルを指定することで問題を解決できます。具体的には、以下のコマンドを実行します。

npm install --ca <path-to-ca-file>

<path-to-ca-file>には、信頼できる認証局の証明書ファイルへのパスを指定します。証明書ファイルは、PEM形式(.pem)またはDER形式(.der)である必要があります。

ネットワーク設定を確認する

ファイアウォールやプロキシサーバーを使用している場合は、npmがレジストリにアクセスできるように設定されていることを確認してください。具体的には、以下の設定を確認する必要があります。

  • ファイアウォール: npmが使用するポート(デフォルトはポート443)が開いていることを確認してください。
  • プロキシサーバー: npmがプロキシサーバー経由でレジストリにアクセスできるように設定されていることを確認してください。

npm cacheをクリアする

稀なケースですが、npmキャッシュが破損していることが原因でこのエラーが発生することがあります。その場合は、以下のコマンドを実行してnpmキャッシュをクリアすることができます。

npm cache clean --force

npxを使用する

npxは、npmパッケージをインストールして実行するためのコマンドラインツールです。npxは、Node.jsのバージョンに依存せずにパッケージをインストールするため、「SSL Error: CERT_UNTRUSTED」エラーが発生しにくくなります。以下のコマンドを実行して、npxを使用してパッケージをインストールできます。

npx install <package-name>

上記の方法で解決できない場合は、以下の情報も合わせて提供していただけると、より具体的な解決策を提案できる可能性があります。

  • 使用しているNode.jsのバージョン
  • 使用しているオペレーティングシステム
  • 使用しているネットワーク環境(ファイアウォールやプロキシサーバーを使用している場合は、その設定情報)
  • エラーメッセージの詳細



# Node.jsを最新バージョンに更新する
curl -sL https://deb.nodesource.com/setup_16.x | bash -s
sudo apt-get install -y nodejs
node -v

# --caオプションを使用する
npm install --ca /path/to/ca-file <package-name>

# npm cacheをクリアする
npm cache clean --force

# npxを使用する
npx install <package-name>

このコマンドは、Node.jsの最新バージョンのインストールスクリプトをダウンロードして実行します。

このコマンドは、npm installコマンドを実行する際に、--caオプションを使用して、信頼できる認証局の証明書ファイルを指定します。<path-to-ca-file>には、信頼できる認証局の証明書ファイルへのパスを指定します。

このコマンドは、npmキャッシュをクリアします。

このコマンドは、npxコマンドを使用してパッケージをインストールします。

注意事項

  • --caオプションを使用する場合は、信頼できる認証局の証明書ファイルへのパスを正しく指定する必要があります。
  • npm cacheをクリアすると、インストール済みのパッケージの情報がすべて削除されます。



以下の環境変数を設定することで、npmが使用する証明書ファイルを指定できます。

NODE_TLS_REJECT_UNTRUSTED=0

この環境変数を設定すると、npmはすべての証明書を信頼し、「SSL Error: CERT_UNTRUSTED」エラーが発生しなくなります。ただし、これはセキュリティ上のリスクがあることに注意する必要があります。

自家署名証明書を使用する

問題が発生しているレジストリが自家署名証明書を使用している場合は、その証明書を信頼できる証明書ストアに追加することで問題を解決できる場合があります。具体的には、以下の手順を実行します。

  1. 自家署名証明書をPEM形式で保存します。
  2. 以下のコマンドを実行して、証明書を信頼できる証明書ストアに追加します。
sudo cp /path/to/certificate.pem /usr/local/share/ca-certificates/
sudo update-ca-certificates

特定のレジストリのみを信頼する

特定のレジストリのみを信頼したい場合は、~/.npmrcファイルに以下の設定を追加できます。

cafile=/path/to/ca-file
registry=<registry-url>

<path-to-ca-file>には、信頼できる認証局の証明書ファイルへのパスを指定します。<registry-url>には、信頼するレジストリのURLを指定します。

npm config set を使用する

npm config set strict-ssl false

上記の方法を試す前に、必ず以下の点に注意してください。

  • これらの方法は、すべてセキュリティ上のリスクを伴います。
  • これらの方法を実行する前に、npmのドキュメントをよく読んで理解してください。
  • 問題が発生した場合は、npmコミュニティフォーラムで助けを求めることができます。

node.js ssl



Node.js ファイル自動リロードのコード例解説

Node. jsでファイルを自動リロードする方法について、日本語で説明します。最も一般的な方法は、Node. jsのモジュールを使用することです。代表的なモジュールは以下の通りです。nodemon: Node. js開発用のツールで、ファイルの変更を検知して自動的にプロセスを再起動します。...


Node.js入門: JavaScriptプログラミング

Node. jsは、サーバーサイドのJavaScript実行環境です。つまり、JavaScriptを使ってウェブサーバーやネットワークアプリケーションを開発することができます。Node. js公式サイトからインストーラーをダウンロードします。...


Node.js の `worker_threads` モジュールを使ってマルチスレッド化を行う

Node. js は、JavaScript を使ってサーバーサイドアプリケーションを開発できるプラットフォームです。シングルスレッドで動作するため、従来のマルチスレッド型言語と比べて軽量で高速な処理が可能です。しかし、マルチコアマシンであっても、シングルスレッドで動作する Node...


Node.js でのファイル書き込み:その他の方法

Node. js は、JavaScript をサーバーサイドで実行するためのプラットフォームです。ファイルシステムへのアクセスも可能で、その中でもファイルにデータを書き込む機能は非常に重要です。const fs = require('fs');...


Node.jsでディレクトリ内のファイル一覧を取得するコードの解説

Node. jsでは、fsモジュールを使用してディレクトリ内のファイル一覧を取得することができます。readdirメソッドは、指定されたディレクトリ内のファイル名とサブディレクトリ名を同期的にまたは非同期的に取得します。同期的な使用:注意:...



SQL SQL SQL SQL Amazon で見る



Google JSAPI vs CDN: jQuery ライブラリの読み込み場所

Google JSAPI は、Google が提供する JavaScript ライブラリのホスティングサービスです。 jQuery を含む多くのライブラリが用意されており、CDN 経由で高速に配信されます。メリット:高速な配信信頼性の高いサービス


EJS、Handlebars、Pug:Node.jsで人気テンプレートエンジン徹底比較

テンプレートエンジンを使用すると、以下の利点があります。開発効率の向上: テンプレートを使用することで、HTML コードを毎回手書きする必要がなくなり、開発時間を短縮できます。コードの保守性向上: テンプレートとロジックを分離することで、コードが読みやすくなり、保守しやすくなります。


「JavaScript、jQuery、Node.js」における「jQueryをNode.jsで使用できるか」の説明(日本語)

一般的に、jQueryをNode. jsで直接使用することは推奨されません。Node. jsはサーバーサイドでのJavaScript実行を想定しており、ブラウザ環境向けのjQueryの機能は直接利用できないからです。詳細な解説:jQuery: ブラウザ環境でDOM操作やイベント処理、アニメーションなどを簡潔に記述するためのJavaScriptライブラリです。


Node.jsとは何ですか? (What is Node.js?)

Node. jsは、JavaScriptをサーバーサイドで実行するためのプラットフォームです。つまり、従来ブラウザ上でしか実行できなかったJavaScriptを、サーバー上で実行できるようにする環境を提供します。JavaScript: プログラミング言語のひとつで、主にブラウザ上で動きます。


Node.js デバッグ入門: 実践的なコード例

Node. js アプリケーションのデバッグは、JavaScript コードのエラーや問題を特定し、解決するためのプロセスです。以下に、一般的なデバッグ手法を日本語で説明します。console. log() 関数を使用して、コードのさまざまな箇所で変数の値やメッセージを出力します。