2012-01-15 20 views
48

Possiedo una macchina virtuale Ubuntu che ha problemi di connessione ai siti con ssl, cioè https. Può scaricare correttamente gli artefatti da Internet se l'url inizia con http.installazione npm senza ssl

npm install scaricherà le dipendenze tramite https. È comunque possibile scaricarlo tramite http?

+0

Quali errori si ottengono durante il download tramite HTTPS? – Bruno

+0

Si blocca per un po ', poi ottengo questo -> https://gist.github.com/1619128 –

+0

Piuttosto che postare questo messaggio di errore su gist.github, dovresti modificare la tua domanda e metterla lì. Tuttavia, non dice nulla su HTTPS. Qualcosa nei registri aggiuntivi? – Bruno

risposta

123

Provare a cambiare il Registro di sistema per la versione http piuttosto che i https di default utilizzando il comando

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

avviso che è necessario lo stesso con un 'sudo' aggiuntivo se si desidera installare pacchetti globali con il flag' -g' – lordvlad

+0

questo risolto il mio problema e potrebbe essere utile per chiunque sia anche dietro un proxy/web firewall e sta ricevendo errori su "SSL23_GET_SERVER_HELLO' sulle installazioni. – meklarian

+0

Ho fatto proprio questo e ho ancora lo stesso errore. Log mostra che le query npm utilizzando http, ma ottengo ancora il protocollo sconosciuto ssl – FrenchFigaro

10

Come conlinf Detto questo, il seguente dovrebbe funzionare:

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

Ora, per aggiungere Parola mia, dovresti anche considerare che il download senza ssl consente un attacco man-in-the-middle. È solo per aggiungere un avvertimento alle persone che avrebbero letto il post.

Se sei uno sviluppatore solista ci dovrebbe essere non molto problemi nel download in http direttamente, ma se volevo attaccare una società che utilizza node.js vorrei prendere in considerazione la consegna codici maligni attraverso npm ... e l'esecuzione di un attacco del genere senza ssl sarà molto più facile.

+0

Puoi spiegare come si farebbe questo? – Mukus

+2

@Mukus DNS è stato compromesso molte volte creando un DNS canaglia locale, in tal modo dirottando "registry.npmjs.org" per i server di destinazione. Poiché non è presente TLS, non è prevista la verifica dell'handshake del server npm tramite la firma del certificato con un'autorità di root. Il server rpm del server dietro il DNS rouge potrebbe fornire qualsiasi codice desideri, che viene eseguito durante l'installazione di npm. – thesmart

+0

+1 per motivi di sicurezza. Ho riscontrato problemi con npm su "https" al lavoro, l'accesso alla VPN ha risolto il problema per me. – Roy

2

Dopo molte prove ed errori, ho scoperto che oltre a tutto ciò che è stato detto sopra, ho anche bisogno di impostare https-proxy sul valore di http proxy.

Quindi il file alla fine .npmrc sembra

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

noti che proxy e https-procura sono identici!

Vedi le commenti su questo thread per maggiori informazioni:

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

Inoltre ho eseguito una npm cache clean --force dopo l'aggiornamento del npmrc per buona misura, ma io non sono sicuro se è necessario.

Spero che questo aiuti.

+0

ha impostato il valore http_proxy su https_proxy per me. Grazie. – mmk