self_signed_cert_in_chain error err code node.js ssl-certificate npm

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



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 de npm :

    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/yourCer‌​ts.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.



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


Puede o no necesitar anteponer 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