2012-01-15 24 views
48

Tengo una máquina virtual Ubuntu que tiene problemas para conectarse a sitios con ssl, es decir, https. Puede descargar artefactos de Internet con éxito si la url comienza con http.npm install sin ssl

npm instalar descargará dependencias a través de https. ¿Hay alguna forma de hacerlo descargar a través de http?

+0

¿Qué errores obtienes al descargar usando HTTPS? – Bruno

+0

Se cuelga por un tiempo, luego obtengo esto -> https://gist.github.com/1619128 –

+0

En lugar de publicar este mensaje de error en gist.github, debe editar su pregunta y colocarla allí. Sin embargo, no dice nada sobre HTTPS. ¿Algo en los registros adicionales? – Bruno

Respuesta

123

Intente cambiar el registro para la versión HTTP en lugar de que el https por defecto utilizando el comando

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

note que necesita hacer lo mismo con un 'sudo' adicional si desea instalar paquetes globales con el indicador' -g' – lordvlad

+0

esto solucionó mi problema y puede ser útil para cualquier otra persona que también esté detrás de un proxy/cortafuegos web y está recibiendo errores en 'SSL23_GET_SERVER_HELLO' en las instalaciones. – meklarian

+0

Hice exactamente eso y sigo teniendo el mismo error. El registro muestra que las consultas npm usando http pero aún obtengo el protocolo desconocido ssl – FrenchFigaro

10

Como conlinf Dicho esto, el siguiente debería funcionar:

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

Ahora, para añadir mi palabra, también debes considerar que la descarga sin ssl permite un ataque de hombre en el medio. Es solo para agregar una advertencia a las personas que leerían la publicación.

Si es un desarrollador en solitario no debería haber mucha dificultad para descargar en http directamente, pero si quisiera atacar a una compañía que usa node.js consideraría entregar código malicioso a través de npm ... Y realizar tal ataque sin ssl será mucho más fácil.

+0

¿Puede explicarme cómo lo haría? – Mukus

+2

@Mukus El DNS se ha visto comprometido muchas veces al configurar el DNS deshonesto local, secuestrando así "registry.npmjs.org" para los servidores de destino. Debido a que no hay TLS, no hay verificación de handshake del servidor npm a través de la firma de certificados con una autoridad raíz. El servidor de rouge npm detrás del DNS rouge podría entregar el código que desee, que se ejecutará durante la instalación de npm. – thesmart

+0

+1 por razones de seguridad. Estaba teniendo problemas con npm sobre 'https' en el trabajo, al iniciar sesión en nuestra VPN resolvió el problema para mí. – Roy

2

Después de mucho ensayo y error encontré que, además de todo lo dicho anteriormente, también tengo que configurar el https-proxy en el valor de http proxy.

Así archivo final .npmrc parece

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

Tenga en cuenta que proxy y HTTPS proxy son idénticos!

Ver los comentarios en este hilo para más información:

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

También me encontré un npm cache clean --force después de actualizar el npmrc una buena medida, pero no estoy seguro si es necesario.

Espero que ayude.

+0

estableciendo el valor http_proxy a https_proxy funcionó para mí. Gracias. – mmk

Cuestiones relacionadas