Estoy usando npm v1.0.104 / node 0.6.12 en ubuntu: recibo el error copiado a continuación al intentar instalar cualquier módulo nuevo a través de npm (probé socket.io anteriormente usando http, no https y me pregunto si eso podría han resultado en el problema con npm / certs sin firmar). El error aparece una vez que npm intenta resolver la URL ' https://registry.npmjs.org '. ¿Hay alguna forma de ignorar el error o quizás localizar / agregar el certificado a una tienda confiable para continuar usando npm?
Se apreciará cualquier idea sobre lo que se debe hacer para resolver el problema (preferiría resolver el problema a través de la configuración en lugar de reinstalarlo si es posible).
Error: "Error: Error SSL: SELF_SIGNED_CERT_IN_CHAIN"
Mensaje completo:
npm ERR! Error: SSL Error: SELF_SIGNED_CERT_IN_CHAIN
npm ERR! at ClientRequest.<anonymous> (/usr/lib/node_modules/npm/node_modules/request/main.js:252:28)
npm ERR! at ClientRequest.emit (events.js:67:17)
npm ERR! at HTTPParser.onIncoming (http.js:1261:11)
npm ERR! at HTTPParser.onHeadersComplete (http.js:102:31)
npm ERR! at CleartextStream.ondata (http.js:1150:24)
npm ERR! at CleartextStream._push (tls.js:375:27)
npm ERR! at SecurePair.cycle (tls.js:734:20)
npm ERR! at EncryptedStream.write (tls.js:130:13)
npm ERR! at Socket.ondata (stream.js:38:26)
npm ERR! at Socket.emit (events.js:67:17)
npm ERR! Report this *entire* log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-@googlegroups.com>
npm ERR!
npm ERR! System Linux 2.6.38-13-generic
npm ERR! command "node" "/usr/bin/npm" "install" "jed"
npm ERR! node -v v0.6.12
npm ERR! npm -v 1.0.104
fuente
Respuestas:
Ejecutar lo siguiente ayudó a resolver el problema:
No puedo comentar si causará otros problemas en este momento. Espero eso ayude.
fuente
A partir del 27 de febrero de 2014, npm ya no admite sus certificados autofirmados . Las siguientes opciones, según lo recomendado por npm, es realizar una de las siguientes acciones:
Actualice su versión de npm
- O -
Indique a su versión actual de npm que use registradores conocidos
Actualización: npm ha publicado más ayuda con SELF_SIGNED_CERT_IN_CHAIN y npm con más soluciones particulares para diferentes entornos
Es posible que necesite o no anteponer
sudo
las recomendaciones.Otras opciones
Parece que las personas están teniendo problemas para usar las recomendaciones de npm, así que aquí hay otras posibles soluciones.
Nodo de actualización en sí mismo
Recibir este error puede sugerir que tiene una versión anterior del nodo, que naturalmente viene con una versión anterior de npm. Una solución es actualizar su versión de Node. Esta es probablemente la mejor opción, ya que lo actualiza y corrige los errores y vulnerabilidades existentes.
El proceso aquí depende de cómo haya instalado Node, su sistema operativo y otros.
Actualizar npm Dado
que probablemente llegó aquí mientras intentaba
install
un paquete, es posible quenpm install npm -g
falle con el mismo error. Si este es el caso, useupdate
en su lugar. Como lo sugirió Nisanth Sojan:Actualización alternativa npm
Una forma de evitar el problema subyacente es usar registradores conocidos, instalar y luego dejar de usar registradores conocidos. Como lo sugirió jnylen:
fuente
npm config set ca ""
primero, luego actualice, luego deshaga el cambio de configuración. Ver: stackoverflow.com/a/22099006/106302sudo
cambia el usuario,-g
marca establece si instalar globalmente para ese usuario o solo en localnode_modules
.Por ahora acabo de cambiar la URL de registro de https a http. Me gusta esto:
fuente
Para guardarlo globalmente
fuente
cb() never called!
error npmNecesita actualizar npm.
Es posible que necesite prefijar esos comandos con
sudo
.Fuente: http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
fuente
sudo
sea necesario en absoluto, y solo prefijo el comando de actualización quesudo
funcionó bien para mí. YMMV.El error
SELF_SIGNED_CERT_IN_CHAIN
significa que tiene un certificado autofirmado en la cadena de certificados, que básicamente no es confiable para el sistema.Si eso sucede, básicamente está sucediendo algo sospechoso, por lo tanto, como la gente ya comentó, no se recomienda simplemente deshabilitar las comprobaciones de certificados, sino que un mejor enfoque es comprender cuál es el problema y solucionar la causa.
Esto puede estar relacionado con:
dirección de repositorio personalizada que no tiene el certificado correcto,
Una red corporativa con proxy transparente.
Si está detrás de un proxy web corporativo, debe configurar las variables de entorno
HTTP_PROXY
/ adecuadasHTTPS_PROXY
o establecerlas a través denpm
:Consulte: Cómo configurar Node.js y Npm detrás de un proxy web corporativo
Si confía en el host, puede exportar el certificado autofirmado de la cadena e importarlo al sistema, de modo que estén marcados como de confianza.
Esto se puede lograr al verificar los certificados por (cambiar
example.com
a npm repo que falla en función delnpm-debug.log
):luego guarde el contenido del certificado (entre
BEGIN
yEND
) en.crt
archivo para importarlo.Linux
Según la sugerencia , puede agregar el certificado exportado al
/etc/environment
archivo (Nodo 7.4+), como:CentOS
En CentOS 5, esto se puede agregar al
/etc/pki/tls/certs/ca-bundle.crt
archivo, por ejemploNota: Para exportar solo el primer certificado, elimínelo
g
al principio.En CentOS 6, se puede copiar el archivo del certificado
/etc/pki/ca-trust/source/anchors/
.Ubuntu / Debian
En Ubuntu / Debian, copie el archivo CRT y
/usr/local/share/ca-certificates/
luego ejecute:Mac OS
En macOS puedes ejecutar:
Ventanas
En Windows:
certutil -addstore -f "ROOT" new-root-certificate.crt
Consulte también: npm - Solución de problemas - Error de SSL
fuente
Poner esto antes del comando parece funcionar
NODE_TLS_REJECT_UNAUTHORIZED=0
. ex:NODE_TLS_REJECT_UNAUTHORIZED=0 npm ...
Sería mejor averiguar cómo hacer que el nodo vea el certificado autofirmado como válido. la sugerencia estricta-ssl anterior no funcionó para mí por alguna razón. Si comprende las implicaciones de seguridad y necesita una solución rápida temporal, esto es lo que encontré en algunos problemas aleatorios de github durante la búsqueda del error en Google.
fuente
El repositorio ya no admite certificados autofirmados. Necesitas actualizar
npm
.Debe abrir una nueva sesión de terminal para usar la actualizada
npm
.Fuente: Esta fue originalmente una edición de la respuesta de jnylen . Aunque las pautas dicen "Damos la bienvenida a todas las ediciones constructivas, pero por favor hágalas sustanciales", la edición fue rechazada debido a "Esta edición cambia demasiado en la publicación original; el significado original o la intención de la publicación se perderían". Supongo que la comunidad prefiere una respuesta por separado.
fuente
sudo ln -s /usr/bin/nodejs /usr/bin/node
.Para aquellos que en una mac con el mismo problema e instalaron npm a través de homebrew :
luego
Funciona para mí en osx (10.9.1)
EDITAR : es posible que lo necesite
brew update
antes de instalar npm. También puede hacer unabrew upgrade
después de actualizar homebrew. También podría ser útil ejecutarbrew doctor
si se encuentra con otros problemas.fuente
Solución rápida y limpia (probado en Linux) (Después de fatidic el 27 de febrero de 2014)
Desinstalar npm
Instale npm (la nueva URL es www.npmjs.org en lugar de npmjs.org )
Consejo : cómo instalar node.js en Linux https://stackoverflow.com/a/22099363/333061
fuente
https://www.npmjs.org/install.sh
en su navegador y descargarlo antes de ejecutarlo manualmente.curl https://npmjs.org/install.sh
comando anterior está redirigiendo ahttps://www.npmjs.org/install.sh
eso es por eso quecurl https://www.npmjs.org/install.sh | sh
funciona sin problemas. está bien instalar desde ahora en pequeño padawan. :)Desinstale NPM e instálelo nuevamente.
A partir del 27 de febrero de 2014, npm ya no admite sus certificados autofirmados. http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
El enlace de arriba sugiere actualizar NPM usando NPM. Esto también falla con SELF_SIGNED_CERT_IN_CHAIN ...
fuente
Apagar SSL parece una idea muy mala. El blog de npm explica que ya no admiten su certificado autofirmado . Sugieren actualizar npm a través de
npm install npm -g
, pero por supuesto recibí el mismo error SELF_SIGNED_CERT_IN_CHAIN. Así que acabo de actualizar el nodo, que actualizó npm junto con él. El procedimiento exacto depende de cómo instaló el nodo en primer lugar.fuente