node.js、ssl-certificate、npmで「Error: SSL Error: SELF_SIGNED_CERT_IN_CHAIN」エラーが発生した時の対処法
npm
を使用中に Error: SSL Error: SELF_SIGNED_CERT_IN_CHAIN
エラーが発生する場合、これは自己署名証明書の問題が原因です。
原因
このエラーは、npm がアクセスしようとしているレジストリが自己署名証明書を使用している場合に発生します。 自己署名証明書は、信頼できる認証局によって発行されていない証明書です。 npm はデフォルトでこれらの証明書を信頼しないため、エラーが発生します。
解決策
このエラーを解決するには、以下の方法があります。
npm のバージョンを上げる
npm 6.14.4 以降では、自己署名証明書に対するデフォルトの動作が変更されました。 これらのバージョンでは、--strict-ssl
フラグを指定しない限り、自己署名証明書が自動的に信頼されます。
npm install --global npm@latest
--strict-ssl フラグを指定する
npm 6.14.4 より前のバージョンを使用している場合、または自己署名証明書を信頼しない場合は、--strict-ssl
フラグを指定して npm コマンドを実行できます。
npm install --strict-ssl=false <package-name>
NODE_TLS_REJECT_UNAUTHORIZED
環境変数を 0
に設定すると、npm はすべての証明書を信頼します。
export NODE_TLS_REJECT_UNAUTHORIZED=0
npm install <package-name>
レジストリの設定を変更して、自己署名証明書を信頼するようにすることもできます。
レジストリの設定方法は、レジストリによって異なります。 詳細については、レジストリのドキュメントを参照してください。
信頼できる証明書をインストールする
自己署名証明書を発行した認証局の信頼できる証明書をインストールすることもできます。
証明書のインストール方法は、オペレーティングシステムによって異なります。 詳細については、オペレーティングシステムのドキュメントを参照してください。
注意事項
自己署名証明書は、信頼できない場合があります。 自己署名証明書を信頼する前に、証明書の発行元を確認する必要があります。
// package.json
{
"name": "my-app",
"version": "1.0.0",
"dependencies": {
"some-package": "^1.0.0"
}
}
// index.js
const somePackage = require('some-package');
console.log(somePackage.version);
エラー例
npm install
npm ERR! code E501
npm ERR! errno 501
npm ERR! syscall install
npm ERR! Error: SSL Error: SELF_SIGNED_CERT_IN_CHAIN
npm ERR! A complete log of this run can be found in:
npm ERR! /home/user/.npm/logs/2023-08-01T08_40_34_424Z-debug.log
上記の解決策のいずれかを使用して、エラーを解決できます。
npm install --global npm@latest
npm install
npm install --strict-ssl=false some-package
例:環境変数 NODE_TLS_REJECT_UNAUTHORIZED を設定する
export NODE_TLS_REJECT_UNAUTHORIZED=0
npm install some-package
例:レジストリの設定を変更する
その他の解決策
npmrc
ファイルは、npm の設定を保存するためのファイルです。 このファイルを使用して、レジストリの設定や、--strict-ssl
フラグのようなデフォルトの npm コマンドオプションを変更することができます。
# .npmrc ファイル
registry=https://registry.npmjs.org/
strict-ssl=false
yarn を使用する
yarn
は、npm に似たパッケージマネージャーです。 yarn
はデフォルトで自己署名証明書を信頼するため、npm
でエラーが発生する場合でも、yarn
で問題なくインストールできる場合があります。
yarn install <package-name>
直接ダウンロードする
どうしても npm でインストールできない場合は、パッケージを直接ダウンロードしてインストールすることもできます。
- パッケージのレジストリページにアクセスします。
- ダウンロードしたいバージョンのパッケージのリンクをクリックします。
- ダウンロードしたファイルを解凍します。
- 解凍したフォルダに移動して、
npm install
コマンドを実行します。
直接ダウンロードする方法を使用する場合は、ダウンロードするファイルが安全であることを確認する必要があります。
npm
で Error: SSL Error: SELF_SIGNED_CERT_IN_CHAIN
エラーが発生した場合は、上記の解決策を試してください。 どの方法が最適かは、状況によって異なります。
node.js ssl-certificate npm