erreur de réception: 'Error: SSL Error: SELF SIGNED CERT IN CHAIN' lors de l'utilisation de npm

j'utilise npm v1.0.104 / node 0.6.12 sur ubuntu-je reçois l'erreur copiée ci-dessous tout en essayant d'installer de nouveaux modules via npm (j'ai testé socket.io plus tôt en utilisant http, pas https cependant et je me demande si cela aurait pu avoir pour résultat le problème avec npm / non signé certs). L'erreur apparaît une fois que npm essaie de résoudre le ' https://registry.npmjs.org ' URL. Y at-il de toute façon je peux ignorer l'erreur ou peut-être localiser/ajouter le cert à un magasin de confiance en afin de continuer à utiliser npm.

toute idée de ce qui doit être fait pour résoudre le problème sera appréciée (je préférerais résoudre le problème par la configuration plutôt que par la réinstallation si possible).

Error: "Error: SSL Error: SELF_SIGNED_CERT_IN_CHAIN"

Message Complet:

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
214
demandé sur Sankar 2012-03-09 04:01:23

12 réponses

exécuter ce qui suit a aidé à résoudre le problème:

npm config set strict-ssl false

Je ne peux pas dire si elle causera d'autres problèmes à l'heure actuelle. Espérons que cela aide.

268
répondu ali haider 2014-02-28 18:39:59

en date du 27 février 2014, npm ne supporte plus ses certificats auto-signés . les options suivantes, tel que recommandé par la NGP, sont de faire l'une des suivantes:

mettez à jour votre version de npm

npm install npm -g --ca=""

-- OU --

Dites à votre version actuelle de la ngp à utiliser des bureaux d'enregistrement

npm config set ca ""

mise à Jour: npm a posté Plus d'aide avec SELF_SIGNED_CERT_IN_CHAIN et npm avec plus de solutions spécifiques aux différents environnements




Il se peut que vous ayez besoin ou non de préparer sudo aux recommandations.


autres options

il semble que les gens ont des problèmes avec les recommandations de la NGP, donc voici d'autres solutions possibles.

Mise à niveau du Nœud lui-même

La réception de cette erreur peut suggérer que vous avez une version plus ancienne de noeud, qui vient naturellement avec une version plus ancienne de npm. Une solution est de mettre à jour votre version de Noeud. C'est probablement la meilleure option car elle vous met à jour et corrige les bogues existants et les vulnérabilités.

le processus ici dépend de la façon dont vous avez installé noeud, votre système d'exploitation, et autrement.

"151990920 de mise à Jour" mnp

Étant donné que vous êtes probablement arrivé ici en essayant de install un paquet, il est possible que npm install npm -g puisse échouer avec la même erreur. Si tel est le cas, utilisez update à la place. Comme suggéré par Nisanth Sojan:

npm update npm -g

mise à Jour de mnp alternative

Une façon de contourner le problème sous-jacent est d'utiliser des unités d'enregistrement connues, installer, puis arrêter d'utiliser des unités d'enregistrement connues. Comme le suggère jnylen:

npm config set ca ""
npm install npm -g
npm config delete ca
203
répondu Kevin Reilly 2014-03-01 03:39:28

pour l'instant, je viens de changer L'URL du registre de https à http. Comme ceci:

npm config set registry="http://registry.npmjs.org/"
61
répondu GermanZ 2012-05-29 09:00:12

vous devez mettre à jour 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

vous pouvez avoir besoin de préfixer ces commandes avec sudo .

Source: http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more

28
répondu jnylen 2014-02-28 15:47:11
npm config set strict-ssl false -g

Pour l'enregistrer à l'échelle mondiale

24
répondu Robin 2016-01-26 16:03:09

le dépôt ne supporte plus les certificats auto-signés. Vous devez mettre à jour 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

vous devez ouvrir une nouvelle session de terminal afin d'utiliser la mise à jour npm .

Source: ce fut à l'origine une édition sur jnylen 'S réponse. Bien que les directives disent "nous nous félicitons de toutes les modifications constructives, mais s'il vous plaît les rendre substantielles, " l'édition a été rejetée en raison de "cette édition change trop dans le post original; la signification originale ou l'intention du post serait perdue." je suppose que la communauté préfère une réponse distincte.

8
répondu Redsandro 2014-02-28 16:38:45

Pour ceux qui mac avec le même problème et installé via npm homebrew :

brew uninstall npm

puis

brew install npm

Fonctionne pour moi sur osx (10.9.1)

EDIT : vous pouvez avoir besoin de brew update avant d'installer npm. Vous pouvez également faire un brew upgrade après avoir mis à jour homebrew. En outre, il pourrait être utile d'exécuter brew doctor si vous rencontrez un d'autres questions.

7
répondu Patrick 2014-03-01 00:33:15

l'erreur SELF_SIGNED_CERT_IN_CHAIN signifie que vous avez auto-signé le certificat dans la chaîne de certificat qui n'est pas fondamentalement fiable par le système.

si cela se produit, fondamentalement quelque chose de louche se passe, donc comme les gens déjà commenté, il n'est pas recommandé de juste désactiver les vérifications de certificat, mais une meilleure approche est de comprendre ce qui est le problème et de corriger la cause de celui-ci.

peut-être lié à:

  • adresse du dépôt personnalisé qui n'a pas le bon certificat,

  • un réseau d'entreprise avec proxy transparent.

    si vous êtes derrière un mandataire web d'entreprise, vous devez configurer les variables d'environnement HTTP_PROXY / HTTPS_PROXY ou les définir via npm :

    npm config set proxy http://proxy.company.com:8080
    npm config set https-proxy http://proxy.company.com:8080
    

    voir: comment configurer le noeud.js et Npm derrière un corporate web proxy

si vous faites confiance à l'hôte, vous pouvez exporter le certificat auto-signé de la chaîne et les importer dans le système, de sorte qu'ils sont marqués comme confiance.

cela peut être réalisé en vérifiant les certificats de (changer example.com en npm repo qui est en défaut basé sur le npm-debug.log ):

openssl s_client -showcerts -connect example.com:443 < /dev/null

puis sauvegarder le contenu du certificat (entre BEGIN et END ) dans le fichier .crt afin de l'importer.

Linux

comme dans suggestion , vous pouvez ajouter le certificat exporté dans /etc/environment fichier (noeud 7.4+), comme:

NODE_EXTRA_CA_CERTS=/etc/pki/ca-trust/source/anchors/yourCer‌​ts.pem

CentOS

sur CentOS 5 ceci peut être ajouté dans /etc/pki/tls/certs/ca-bundle.crt fichier, par exemple

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

Note: pour exporter seulement le premier certificat, supprimer g au début.

dans CentOS 6, le fichier de certificat peut être copié sur /etc/pki/ca-trust/source/anchors/ .

Ubuntu / Debian

dans Ubuntu/Debian, Copiez le fichier CRT dans /usr/local/share/ca-certificates/ puis lancez:

sudo update-ca-certificates

macOS

dans macOS vous pouvez exécuter:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/foo.crt

Windows

Dans Windows: certutil -addstore -f "ROOT" new-root-certificate.crt


Voir aussi: npm-dépannage-erreur SSL

7
répondu kenorb 2017-09-11 10:36:10

solution rapide et propre (Linux testé) (après fatidic 27 février 2014)


désinstaller npm

npm rm npm -g

installez npm (la nouvelle URL est www.npmjs.org au lieu de npmjs.org )

curl https://www.npmjs.org/install.sh | sh

Astuce : comment installer nœud.js dans linux https://stackoverflow.com/a/22099363/333061

3
répondu Igor Parra 2017-05-23 12:18:20

désinstaller NPM et l'installer à nouveau.

en date du 27 février 2014 npm ne supporte plus ses certificats auto-signés. http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more

le lien ci-dessus suggère une mise à niveau de la NGP à l'aide de la NGP. Cela échoue aussi avec SELF_SIGNED_CERT_IN_CHAIN...

2
répondu Florian Winter 2014-02-28 09:46:34

désactiver SSL semble être une très mauvaise idée. le blog de la npm explique qu'ils ne soutiennent plus leur certificat auto-signé. Ils suggèrent de mettre à jour npm via npm install npm -g , mais j'ai bien sûr la même erreur AUTO_SIGNED_CERT_IN_CHAIN. Donc je viens de mettre à jour node, qui a mis à jour npm avec elle. Procédure exacte dépend de la façon dont vous avez installé nœud en premier lieu.

1
répondu Jeremiah Orr 2014-02-28 13:06:43

veuillez vérifier votre connexion internet et vous assurer qu'elle fonctionne. assurez-vous que le noeud et le npm sont installés et exécuter la commande suivante dans l'invite de commande

npm désinstaller -g @angulaire/cli

npm cache propre

npm install-g @angulaire/cli@plus tard

-2
répondu vivek_waghmare 2018-08-01 12:46:14