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
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.
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
pour l'instant, je viens de changer L'URL du registre de https à http. Comme ceci:
npm config set registry="http://registry.npmjs.org/"
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
npm config set strict-ssl false -g
Pour l'enregistrer à l'échelle mondiale
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.
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.
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 vianpm
: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/yourCerts.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
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
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...
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.
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