2012-01-15 18 views
48

私は、sslを持つサイト(https)に接続できないUbuntu VMを持っています。 URLがhttpで始まる場合、インターネットから成果物をダウンロードできます。npm install without ssl

npm installはhttps経由で依存関係をダウンロードします。とにかくhttp経由でダウンロードされますか?

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

、追加する:

+0

HTTPSを使用してダウンロードするとどのようなエラーが発生しますか? – Bruno

+0

それはしばらくの間それがハングする、私はこれを得る - > https://gist.github.com/1619128 –

+0

このエラーメッセージをgist.githubに掲示するのではなく、質問を編集してそこに置くべきです。しかし、HTTPSについては何も言わない。追加のログには何もありませんか? – Bruno

答えて

123

conlinfが言ったように、デフォルトのHTTPS 1は、以下の作業をする必要があり、コマンド

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

'-g'フラグ – lordvlad

+0

でグローバルパッケージをインストールしたい場合は、追加の' sudo'と同じものを使う必要があることに注意してください。これは私の問題を解決したもので、プロキシ/ウェブファイアウォールの背後にいるインストール時に 'SSL23_GET_SERVER_HELLO'でエラーを受け取っています。 – meklarian

+0

私はちょうどそれをして、同じエラーを取得します。ログは、httpを使用してnpmのクエリを表示するが、まだ未知のプロトコルsslを取得することを示しています – FrenchFigaro

10

を使用して、むしろというHTTPバージョンにレジストリを変更してみてください私の言葉では、あなたはまた、sslなしでのダウンロードが中間者の攻撃を可能にすると考えるべきです。投稿を読む人に警告を加えるだけです。

httpでソロデベロッパーの方は直接ダウンロードしても問題ありませんが、node.jsを使用している企業を攻撃したい場合は、npmを通じて悪意のあるコードを配信することを検討します。 sslははるかに簡単になります。

+0

あなたはこれを行う方法を説明できますか? – Mukus

+2

@Mukus DNSはローカルの不正なDNSを設定することによって何度も改ざんされ、ターゲットサーバのために "registry.npmjs.org"をハイジャックします。 TLSが存在しないため、ルート権限を持つ証明書署名を使用してnpmサーバーのハンドシェイク検証が行われません。 rouge DNSの背後にあるrouge npmサーバーは、npmのインストール中に実行される任意のコードを提供できます。セキュリティ上の理由から、 – thesmart

+0

+1私は仕事で 'https'でnpmの問題を抱えていましたが、私たちのVPNにサインして私の問題を解決しました。 – Roy

2

多くの試行錯誤の末、私は上記のすべてに加えて、https-proxyをhttp proxyの値に設定する必要があることも発見しました。

ので.npmrcファイルの端は

proxy=http://username:[email protected]:port/ 
https-proxy=http://username:[email protected]:port/ 
strict-ssl=false 
registry=http://registry.npmjs.org/ 

プロキシおよびHTTPSプロキシが同一であることに注意してくださいのように見えます!

詳細はこのスレッドのコメントを参照してください:

https://github.com/npm/npm/issues/8034

はまた、私は良い測定のためのnpmrcを更新した後npm cache clean --forceを走ったが、私はそれが必要な場合はわかりません。

希望に役立ちます。

+0

http_proxyの値をhttps_proxyに設定してくれました。ありがとう。 – mmk