npm ERR!コードUNABLE_TO_GET_ISSUER_CERT_LOCALLY


117

反応アプリケーションを作成するすべての方法を試しています。私はmavenで試しましたが、今はFacebook Incubatorsのcrate-react-appビルドシステムで試しています。

create-react-app my-appnpm環境でコマンドを実行しようとしたところ、問題はありませんでした。しかし、自分の作業環境で同じコマンドを試したところ、コマンドプロンプトでこのエラーが発生しました

npm ERR! node v6.10.2
npm ERR! npm  v3.10.10
npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY

npm ERR! unable to get local issuer certificate
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

1
sudo走っnpm install aws-sdkたときも使えなかった。実行するsudo npm install aws-sdkと、このエラーが発生しました。
カイルブリデンスティン

回答:


296

インターネット検索からの迅速な解決策はnpm config set strict-ssl false、幸運にもそれがうまくいったことでした。しかし、私の作業環境の一部として、私はstrict-sslフラグをfalseに設定するよう制限されています。

後で私は安全で実用的な解決策を見つけました、

npm config set registry http://registry.npmjs.org/  

これは完全に機能しHappy Hacking!、strict-sslフラグをfalseに設定しないことで成功メッセージを受け取りました。


2
私も、私のワークプロキシが問題を引き起こしていたので(registry.npmjs.orgではなく)HTTPバージョンのNPMリポジトリの使用に戻しました(MITMとして機能し、証明書検証の問題を引き起こしたため)証明書の問題を出しましたが、パッケージをダウンロードする必要がありました。
ロバートダンドン、2017年

1
私はすでにこの設定を持っていると思いましたが、よく見るとhttpではなくhttps(registry.npmjs.org)がありました。httpに変更され、機能しました。
Ashish Bajpai 2017

私はこれを行いましたが、sudo走っnpm install aws-sdkたときにも使用できませんでした。実行するsudo npm install aws-sdkと、このエラーが発生しました。
カイルブリデンスティーン

私は走ったので、私はこの記事に示されたものと同じエラーを得ていたnpm config set strict-ssl falseし、npm config set registry http://registry.npmjs.org/ しかし、実行しているとき、私はまだエラーを得ていたsudo npm install aws-sdkが、私は落下時sudoの部分を、ちょうど走ったnpm install aws-sdkそれが働きました。
カイルブリデンスティーン

私にとっては、の設定以外はnpm config set strict-ssl false機能しません。これは問題でありnode.jsnpmチームが修正できない場合は、適切な回避策を検討して文書化する必要があります。
RinoTom 2018年

23

何が起こっている可能性がありますか?あなたの会社は特定のトラフィックを復号化し、それを彼らの証明書(おそらくあなたはすでにあなたのキーチェーンまたは信頼されたルート証明書に持っています)で再暗号化します

ノード7以降を使用している場合、この修正はnodeおよびnode-gypと互換性があることがわかりました(Windowsの場合はこれを別の方法で行う必要がありますが、基本的にはこの環境変数を追加するだけです)。

export NODE_EXTRA_CA_CERTS="absolute_path_to_your_certificates.pem" (Windowsでは、引用符を削除する必要がある場合があります-コメントを参照してください)

pemファイルには複数の証明書を含めることができます:https : //nodejs.org/api/cli.html#cli_node_extra_ca_certs_file

証明書が適切なpem形式であることを確認してください(実際の改行はリテラルではなく必要です\n

相対パス(.または~)で動作させることができなかったようです

この修正は、基本的にnpmとnode-gypに通常のCAに対するチェックを使用するように指示しますが、この証明書がそれに出くわしたときにも許可します

システムの信頼できる証明書を使用できることが理想的ですが、残念ながらそうではありません。


すごい。詳細な説明に賛成票を投じてください。私はよりよく理解するのに役立ちました。素敵な情報。
vissu

2
Windowsでは、引用符を削除しない限り、パスは機能しませんでした。
クリスアンダーソン

1
BlueCoatが原因でこの問題が発生し、数か月ごとに回答を参照する必要があります。厳密なSSLを無効にするよりも間違いなく優れたソリューションです。ありがとうございます。
ジョーダングレイ

Windowsで.pemファイルはどこにありますか?HardDisk全体でpemファイルを検索したところ、Windows \ System32の奥深くにいくつかのレベルが見つかりました。しかし、機能していません
Sanchit Jain

10

NPMリポジトリのURLをHTTPに変更することはクイックフィックスとして機能しますが、HTTPSを使用したいと思いました。

私の場合、雇用主(ZScaler)のプロキシが問題を引き起こしていました(MITMとして機能し、認証検証の問題を引き起こしたため)。

これとGit(HTTPSを介したGitHubリポジトリのクローン作成についても同じ問題がありました)に役立つスクリプト見つけたのを忘れて、使用するためにフォークしました

基本的に、それはgitに対して次のことを行います。

git config --global http.proxy http://gateway.zscaler.net:80/
git config --system http.proxy http://gateway.zscaler.net:80/

ノードの場合はproxy=http://gateway.zscaler.net:80/c:\Users\$USERNAME\npm\.npmrc

これで問題は解決しました。


2
会社が構成されているZSクラウドを確認することをお勧めします。基本的にip.zscaler.comは、クラウド名を確認して、URLに設定します。例えば:それは言うならばzscalertwo.net、その後、次のURLに置き換え:gateway.zscalertwo.net
ラーフルBharadwaj

6

私が見つけることができるすべての解決策を試した後、私は見つけることができました:

  • 厳格なSSLをオフにする: npm config set strict-ssl=false
  • レジストリをhttpsではなくhttpに変更します。 npm config set registry http://registry.npmjs.org/
  • cafile設定の変更: npm config set cafile /path/to/your/cert.pem
  • 不明なCAの拒否を停止します。 set NODE_TLS_REJECT_UNAUTHORIZED=0

私にとって今最もうまく機能していると思われる解決策は、既存のCAを拡張するNODE_EXTRA_CA_CERTS環境変数を使用することです。これは、CAを.npmrcファイルのcafileオプションで置き換えるのではありません。端末で次のように入力して設定できます。NODE_EXTRA_CA_CERTS=path/to/your/cert.pem

もちろん、この変数を毎回設定するのは煩わしいので、ターミナルを開くたびに設定されるようにbashプロファイルに追加しました。~/.bash_profileファイルがない場合は作成します。次に、そのファイルの最後にを追加しますexport NODE_EXTRA_CA_CERTS=path/to/your/cert.pem。次に、.npmrcのcafile設定を削除します。


4番目のオプションは魅力的でした。process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0;
tomdemuyt

5

私を信じて、これはあなたのために働くでしょう:

    npm config set registry http://registry.npmjs.org/  

このリンクで質問に答えることができますが、回答の重要な部分をここに含め、参照用のリンクを提供することをお勧めします。リンクされたページが変更されると、リンクのみの回答が無効になる可能性があります。質問への回答方法の詳細については、回答方法をご覧ください
Artog

4

同じエラーがありました。SSL証明書に関連しているようです。パブリックパッケージにNPMを使用している場合(HTTPSのセキュリティは必要ありません)、次のコマンドを使用して厳密なSSLキー検証をオフにできます。

これは、公開されているいくつかのパッケージを一度にインストールするだけの場合は、最も簡単な修正方法です。

npm config set strict-ssl=false

5
これを行うには固有のリスクがあり、悪意のある中間者攻撃の被害者である場合、ダウンロード時にパッケージが変更される可能性があります。
Alex KeySmith 2018年

@AlexKeySmithあなたは正しいです。ただし、オッズはかなり低いです。これが唯一のオプションかもしれません。警告エンプター
ジェイソンガイガー

1

npmを更新しようとしたときにこのエラーが発生しましたが、AWS Linuxのyumから本当に古いバージョン(1.3.6!)がインストールされていました。新しいnpmバージョンを手動でインストールでき、すべてが修正されました。


0

以下のコードは私のために完全に機能しましたここではhttpの代わりにhttpsのみ

npm config set registry http://registry.npmjs.org/  

0

私の場合、ある時点で、プロジェクト用の証明書を使用するようにグローバル構成を設定しました。

npm config list

/path/to/global/.npmrc
NODE_EXTRA_CA_CERTS = "./certs/chain.pem"

私はファイルを開き、行を削除して、npm install再度作業しました。


0

以下のエラーが発生しました

PS C:\ Users \ chpr \ Documents \ GitHub \ vue-nwjs-hours-tracking> npm install vue npm ERR!コードUNABLE_TO_GET_ISSUER_CERT_LOCALLY npm ERR!errno UNABLE_TO_GET_ISSUER_CERT_LOCALLY npm ERR!https://registry.npmjs.org/vueへのリクエストに 失敗しました、理由:ローカル発行者証明書を取得できません

npm ERR!この実行の完全なログは、npm ERR!にあります。
C:\ Users \ chpr \ AppData \ Roaming \ npm-cache_logs \ 2020-07-29T03_22_40_225Z-debug.log PS C:\ Users \ chpr \ Documents \ GitHub \ vue-nwjs-hours-tracking> PS C:\ Users \ chpr \ Documents \ GitHub \ vue-nwjs-hours-tracking> npm ERR!
C:\ Users \ chpr \ AppData \ Roaming \ npm-cache_logs \ 2020-07-29T03_22_40_225Z-debug.log

以下のコマンドは問題を解決しました:

npm config set strict-ssl false
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.