web-dev-qa-db-ja.com

npmインストールエラー-ローカル発行者証明書を取得できません

Npmインストールを実行するとunable to get local issuer certificateエラーが表示されます。

typings ERR! message Unable to read typings for "es6-shim". You should check the
 entry paths in "es6-shim.d.ts" are up to date
typings ERR! caused by Unable to connect to "https://raw.githubusercontent.com/D
efinitelyTyped/DefinitelyTyped/7de6c3dd94feaeb21f20054b9f30d5dabc5efabd/es6-shim
/es6-shim.d.ts"
typings ERR! caused by unable to get local issuer certificate

最近、以前のバージョンからノード4に更新しましたが、この種の問題が発生した場合、ノードはより厳密になっているようです。

議論された問題があります here これはcaファイルの使用について述べていますが、それは私の理解を少し超えており、私はそれについて何をすべきか分かりません。

私は企業のファイアウォールの内側にいますが、ブラウザで制限なしにURLにアクセスできます。

この問題と、考えられる解決策についての洞察は誰にもありますか?

私はその間にノード0.12に戻ることについて疑問に思っています:(

29
mindparse

タイプは、~/.typingsrc構成ファイルで構成できます。 (~はホームディレクトリを意味します)

Github: https://github.com/typings/typings/issues/12 でこの問題を見つけた後、~/.typingsrcを作成し、この構成を設定することでこの問題を回避できました。

{
  "proxy": "http://<server>:<port>",
  "rejectUnauthorized": false
}

proxy設定なしでも動作するように見えたので、どこかの環境からそれを拾うことができたのかもしれません。

これは本当の解決策ではありませんが、typingsが企業のファイアウォールの問題を無視して作業を続行できるようにするのに十分でした。もっと良い解決策があると確信しています。

12
nfiles

これを試してくださいnpm config set strict-ssl false。これは、このURLで共有される代替です https://github.com/nodejs/node/issues/3742

56
Sam Jacob Dev

ここで説明されているcaファイルの使用について説明する問題がありますが、それは私の理解を少し超えており、どうすればよいかわかりません。

方法がわかれば、これはそれほど難しくありません! Windowsの場合:

Chromeを使用すると、NPMがルートURLに移動します(そのため https://raw.githubusercontent.com )。開発ツールを開き、セキュリティ->証明書の表示に進みます。証明書パスを確認し、トップレベルの証明書を確認します(開いていない場合)。 「詳細」に進み、「ファイルにコピー...」で証明書をエクスポートします。

これをDERからPEMに変換する必要があります。これを行うにはいくつかの方法がありますが、私が見つけた最も簡単な方法は、関連するキーワードで簡単に見つけられるオンラインツールでした。

これで、お気に入りのテキストエディターでキーを開くと、次のように表示されます。

-----BEGIN CERTIFICATE----- 

yourkey

-----END CERTIFICATE-----

これが必要な形式です。必要な数のキーに対してこれを実行し、それらをすべて1つのファイルに結合できます。私の場合、githubとnpmレジストリキーを実行する必要がありました。

.npmrcを編集して、キーを含むファイルを指すようにします

cafile=C:\workspace\rootCerts.crt

私は個人的に、strict-sslオプションとは対照的に、これが企業プロキシの背後で非常に優れていることを発見しました。 YMMV。

15
Tim L

コマンドプロンプトを使用してコメントの下に配置するだけです。

その100%が正常に解決されました

-npm config set strict-ssl false
4
Yogesh Patil

まあ、これは正しい答えではありませんが、簡単な回避策と考えることができます。正解は、厳密なSSLをオフにすることです

同じエラーが発生しています

PATHにPhantomJSが見つかりません
ダウンロード https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-windows.Zip
C:\ Users\Sam\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.Zipへの保存
受信しています...

リクエスト中にエラーが発生しました。
エラー:ローカル発行者証明書を取得できません
TLSSocketで。 (_tls_wrap.js:1105:38)
emitNone(events.js:106:13)
TLSSocket.emit(events.js:208:7)
TLSSocket._finishInit(_tls_wrap.js:639:8)
TLSWrap.ssl.onhandshakedone(_tls_wrap.js:469:38)

だからエラーを読んだ後。

ファイルを手動でダウンロードし、必要なパスに配置するだけです。すなわち

C:\Users\Sam\AppData\Local\Temp\phantomjs\

これで私の問題が解決しました。

    PhantomJS not found on PATH                                                                                                
Download already available at C:\Users\sam\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.Zip                    
Verified checksum of previously downloaded file                                                                            
Extracting Zip contents                                    
1
Sam

免責事項:このソリューションは安全性が低く、悪い習慣です。これをしないでください。重複したエラーメッセージが表示されました-企業の背後にいますVPN /ファイアウォール。この問題を解決するには、.typingsrcファイルをユーザーディレクトリ(WindowsではC:\Users\MyUserName\.typingsrc)に追加しました。もちろん、SSLを回避するときはいつでも、証明書の問題を修正するためにシステム管理者に頼む必要があります。

レジストリURLをhttpsからhttpに変更し、上記の nfiles 'answser にあるように設定しますrejectUnauthorizedtofalse

。typingsrc(プロジェクトディレクトリまたはユーザールートディレクトリに配置)

{
     "rejectUnauthorized": false,
     "registryURL": "http://api.typings.org/"
}

オプションでgithubトークンを追加します(これも追加するまで成功しませんでした。)

{
    "rejectUnauthorized": false,
    "registryURL": "http://api.typings.org/",
    "githubToken": "YourGitHubToken"
}

https://github.com/blog/1509-personal-api-tokens でgithubトークンを設定する手順を参照してください

1
Benson

追加:

process.env["NODE_TLS_REJECT_UNAUTHORIZED"]

ソース: https.requestでnode.jsの無効な自己署名SSL証明書を無視します

0
Henry