node.js - error - npm err! code self_signed_cert_in_chain
error de recepción: ''Error: Error de SSL: SELF_SIGNED_CERT_IN_CHAIN'' al usar npm (13)
Desactivar SSL parece una idea profundamente mala. El blog de npm explica que ya no son compatibles con su certificado autofirmado . Sugieren actualizar npm a través de npm install npm -g
, pero, por supuesto, obtuve el mismo error SELF_SIGNED_CERT_IN_CHAIN. Así que acabo de actualizar el nodo, que actualiza npm junto con él. El procedimiento exacto depende de cómo instaló el nodo en primer lugar.
Estoy usando npm v1.0.104 / node 0.6.12 en ubuntu: estoy recibiendo 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 podría han resultado en el problema con npm / unsigned certs). El error aparece una vez que npm intenta resolver la URL '' https://registry.npmjs.org ''. De todos modos, puedo ignorar el error o quizás ubicar / agregar el certificado a una tienda de confianza para poder seguir usando npm.
Se agradecerá cualquier información sobre qué se debe hacer para resolver el problema (preferiría resolver el problema a través de la configuración en lugar de volver a instalar 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! <[email protected]>
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
Desinstala NPM y vuelve a instalarlo.
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 anterior sugiere actualizar NPM usando NPM. Esto también falla con SELF_SIGNED_CERT_IN_CHAIN ...
Ejecutar lo siguiente ayudó a resolver el problema:
npm config set strict-ssl false
No puedo comentar si causará otros problemas en este momento. Espero eso ayude.
El error SELF_SIGNED_CERT_IN_CHAIN
significa que usted tiene un certificado autofirmado en la cadena de certificados que el sistema básicamente no confía en él.
Si eso sucede, básicamente algo raro está ocurriendo, por lo tanto, como ya comentaron las personas, no se recomienda simplemente deshabilitar las verificaciones de los certificados, pero lo mejor es comprender cuál es el problema y corregir la causa.
Esto puede estar relacionado con:
dirección de repositorio personalizado 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
/HTTPS_PROXY
adecuadas o configurarlas a través denpm
:npm config set proxy http://proxy.company.com:8080 npm config set https-proxy http://proxy.company.com:8080
Vea: 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, para que se marque como confiable.
Esto puede lograrse verificando los certificados mediante (cambie example.com
en el repositorio npm que está fallando según el npm-debug.log
):
openssl s_client -showcerts -connect example.com:443 < /dev/null
luego guarde el contenido del certificado (entre BEGIN
y END
) en el archivo .crt
para importarlo.
Linux
Según la suggestion , puede agregar un certificado exportado en el /etc/environment
(Nodo 7.4+), como:
NODE_EXTRA_CA_CERTS=/etc/pki/ca-trust/source/anchors/yourCerts.pem
CentOS
En CentOS 5, esto puede /etc/pki/tls/certs/ca-bundle.crt
archivo /etc/pki/tls/certs/ca-bundle.crt
, por ejemplo
ex +''g/BEGIN CERTIFICATE/,/END CERTIFICATE/p'' <(echo | openssl s_client -showcerts -connect example.com:443) -scq | sudo tee -a /etc/pki/tls/certs/ca-bundle.crt
sudo update-ca-trust force-enable
sudo update-ca-trust extract
npm install
Nota: Para exportar solo el primer certificado, elimine g
al principio.
En CentOS 6, el archivo de certificado se puede copiar a /etc/pki/ca-trust/source/anchors/
.
Ubuntu / Debian
En Ubuntu / Debian, copie el archivo CRT en /usr/local/share/ca-certificates/
luego ejecute:
sudo update-ca-certificates
Mac OS
En macOS puedes ejecutar:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/foo.crt
Windows
En Windows: certutil -addstore -f "ROOT" new-root-certificate.crt
Ver también: npm - Resolución de problemas - Error SSL
El repositorio ya no admite certificados autofirmados. Necesitas actualizar npm
.
// Disable the certificate temporarily in order to do the upgrade
npm config set ca ""
// Upgrade npm. -g (global) means you need root permissions; be root
// or prepend `sudo`
sudo npm install npm -g
// Undo the previous config change
npm config delete ca
// For Ubuntu/Debian-sid/Mint, node package is renamed to nodejs which
// npm cannot find. Fix this:
sudo ln -s /usr/bin/nodejs /usr/bin/node
Necesitas abrir una nueva sesión de terminal para usar el npm
actualizado.
Fuente: Esta fue originalmente una edición de la respuesta de jnylen . Aunque las directrices dicen "Damos la bienvenida a todas las ediciones constructivas, pero por favor, hágalas sustanciales", la edición se rechazó debido a que "Esta edición cambia demasiado en la publicación original; el significado o la intención original de la publicación se perdería". Supongo que la comunidad prefiere una respuesta separada.
Necesitas actualizar npm.
// Do this first, or the upgrade will fail
npm config set ca ""
npm install npm -g
// Undo the previous config change
npm config delete ca
Puede que tenga que prefijar esos comandos con sudo
.
Fuente: http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
Para aquellos que en un Mac con el mismo problema e instalaron npm a través de homebrew :
brew uninstall npm
entonces
brew install npm
Funciona para mí en osx (10.9.1)
EDITAR : Es posible que necesite brew update
antes de instalar npm. También puedes hacer una brew upgrade
después de actualizar homebrew. También puede ser útil ejecutar brew doctor
si tiene algún otro problema.
Poner esto antes de que el comando parezca funcionar NODE_TLS_REJECT_UNAUTHORIZED=0
. ej .: NODE_TLS_REJECT_UNAUTHORIZED=0 npm ...
Sería mejor averiguar cómo hacer que un nodo vea el certificado autofirmado como válido. La sugerencia de strict-ssl anterior no funcionó para mí por alguna razón. Si entiendes las implicaciones de seguridad y necesitas una solución rápida temporal, esto es lo que encontré en algunos problemas aleatorios de github durante la búsqueda de Google del error.
Por ahora, acabo de cambiar la URL del registro de https a http. Me gusta esto:
npm config set registry="http://registry.npmjs.org/"
Por favor, compruebe su conexión a Internet y asegúrese de que está funcionando. asegúrese de que node y npm estén instalados y ejecute el siguiente comando en el símbolo del sistema
npm desinstalar -g @ angular / cli
npm caché limpio
npm install -g @ angular / cli @ latest
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 hacer una de las siguientes acciones:
Actualiza tu versión de npm
npm install npm -g --ca=""
- O -
Dígale a su versión actual de npm que use registradores conocidos
npm config set ca ""
Actualización: npm ha publicado Más ayuda con SELF_SIGNED_CERT_IN_CHAIN y npm con más soluciones específicas para diferentes entornos
sudo
a las recomendaciones. Otras opciones
Parece que la gente está teniendo problemas con las recomendaciones de npm, por lo que aquí hay otras soluciones potenciales.
Actualizar el propio nodo
Recibir este error puede sugerirle que tenga 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 errores y vulnerabilidades existentes.
El proceso aquí depende de cómo haya instalado Node, su sistema operativo y otros.
Actualizar npm
Como es probable que haya llegado al intentar install
un paquete, es posible que npm install npm -g
falle con el mismo error. Si este es el caso, utilice la update
lugar. Según lo sugerido por Nisanth Sojan:
npm update npm -g
Actualizar npm alternativa
Una forma de solucionar el problema subyacente es usar registradores conocidos, instalar y luego dejar de usar registradores conocidos. Según lo sugerido por jnylen:
npm config set ca ""
npm install npm -g
npm config delete ca
Solución rápida y limpia (prueba de Linux) (después de fatidic 27 de febrero de 2014)
Desinstalar npm
npm rm npm -g
Instale npm (la nueva URL es www.npmjs.org en lugar de npmjs.org )
curl https://www.npmjs.org/install.sh | sh
Consejo : cómo instalar node.js en linux https://.com/a/22099363/333061
npm config set strict-ssl false -g
Para guardarlo globalmente