J'utilise npm v1.0.104 / node 0.6.12 sur ubuntu - Je reçois l'erreur copiée ci-dessous lors de la tentative d'installation 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 pourrait ont entraîné le problème avec npm / certificats non signés). L'erreur apparaît une fois que npm essaie de résoudre l' URL ' https://registry.npmjs.org '. Existe-t-il de toute façon que je peux ignorer l'erreur ou peut-être localiser / ajouter le certificat à un magasin de confiance afin de continuer à utiliser npm.
Tout aperçu de ce qui doit être fait pour résoudre le problème sera apprécié (je préférerais résoudre le problème par la configuration plutôt que de le réinstaller si possible).
Erreur: "Erreur: erreur SSL: 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
la source
Réponses:
L'exécution des éléments suivants a aidé à résoudre le problème:
Je ne peux pas dire si cela causera d'autres problèmes pour le moment. J'espère que ça aide.
la source
Depuis le 27 février 2014, npm ne prend plus en charge ses certificats auto-signés . Les options suivantes, recommandées par npm, consistent à effectuer l'une des opérations suivantes:
Mettez à niveau votre version de npm
-- OU --
Dites à votre version actuelle de npm d'utiliser des bureaux d'enregistrement connus
Mise à jour: npm a publié plus d'aide avec SELF_SIGNED_CERT_IN_CHAIN et npm avec plus de solutions particulières à différents environnements
Vous devrez peut-être ou non ajouter
sudo
les recommandations.Autres options
Il semble que les gens rencontrent des problèmes lors de l'utilisation des recommandations de npm, alors voici d'autres solutions potentielles.
Mettre à niveau le nœud lui-même La
réception de cette erreur peut suggérer que vous avez une ancienne version de nœud, qui vient naturellement avec une ancienne version de npm. Une solution consiste à mettre à niveau votre version de Node. C'est probablement la meilleure option car elle vous met à jour et corrige les bugs et vulnérabilités existants.
Le processus ici dépend de la façon dont vous avez installé Node, de votre système d'exploitation et autrement.
Mettre à jour npm
Étant donné que vous êtes probablement arrivé ici en essayant
install
un package, il est possible quenpm install npm -g
cela échoue avec la même erreur. Si tel est le cas, utilisezupdate
plutôt. Comme suggéré par Nisanth Sojan:Mettre à jour l'alternative npm
Une façon de contourner le problème sous-jacent consiste à utiliser des bureaux d'enregistrement connus, à installer, puis à cesser d'utiliser des bureaux d'enregistrement connus. Comme suggéré par jnylen:
la source
npm config set ca ""
abord, puis mettez à niveau, puis annulez le changement de configuration. Voir: stackoverflow.com/a/22099006/106302sudo
change l'utilisateur,-g
définit les ensembles d'indicateurs pour l'installer globalement pour cet utilisateur ou juste en localnode_modules
.Pour l'instant, je viens de passer l'URL du registre de https à http. Comme ça:
la source
Pour l'enregistrer globalement
la source
cb() never called!
fameuse erreur npmVous devez mettre à jour npm.
Vous devrez peut-être préfixer ces commandes avec
sudo
.Source: http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
la source
sudo
soit nécessaire, et préfixer la commande de mise à niveau avecsudo
a bien fonctionné pour moi. YMMV.L'erreur
SELF_SIGNED_CERT_IN_CHAIN
signifie que vous avez un certificat auto-signé dans la chaîne de certificats qui n'est fondamentalement pas approuvé par le système.Si cela se produit, il se passe essentiellement quelque chose de louche, donc comme les gens l'ont déjà dit, il n'est pas recommandé de simplement désactiver les vérifications de certificats, mais la meilleure approche consiste à comprendre quel est le problème et à en résoudre la cause.
Cela peut être lié à:
adresse de référentiel personnalisée qui n'a pas le bon certificat,
un réseau d'entreprise avec proxy transparent.
Si vous êtes derrière un proxy Web d'entreprise, vous devez configurer les variables
HTTP_PROXY
/HTTPS_PROXY
environnement appropriées ou les définir vianpm
:Voir: Comment configurer Node.js et Npm derrière un proxy Web d'entreprise
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, afin qu'ils soient marqués comme approuvés.
Ceci peut être réalisé en vérifiant les certificats par (changer
example.com
en npm repo qui échoue sur la base dunpm-debug.log
):puis enregistrez le contenu du certificat (entre
BEGIN
etEND
) dans un.crt
fichier afin de l'importer.Linux
Selon la suggestion , vous pouvez ajouter un certificat exporté dans un
/etc/environment
fichier (Node 7.4+), comme:CentOS
Sur CentOS 5, cela peut être ajouté au
/etc/pki/tls/certs/ca-bundle.crt
fichier, par exempleRemarque: pour exporter uniquement le premier certificat, supprimez-le
g
au début.Dans CentOS 6, le fichier de certificat peut être copié
/etc/pki/ca-trust/source/anchors/
.Ubuntu / Debian
Dans Ubuntu / Debian, copiez le fichier CRT
/usr/local/share/ca-certificates/
puis exécutez:macOS
Sous macOS, vous pouvez exécuter:
les fenêtres
Sous Windows:
certutil -addstore -f "ROOT" new-root-certificate.crt
Voir aussi: npm - Dépannage - Erreur SSL
la source
Mettre cela avant la commande semble fonctionner
NODE_TLS_REJECT_UNAUTHORIZED=0
. ex:NODE_TLS_REJECT_UNAUTHORIZED=0 npm ...
Il serait préférable de comprendre comment faire en sorte que le nœud considère le certificat auto-signé comme valide. La suggestion strict-ssl ci-dessus n'a pas fonctionné pour moi pour une raison quelconque. Si vous comprenez les implications en matière de sécurité et avez besoin d'une solution rapide temporaire, voici ce que j'ai trouvé dans certains problèmes aléatoires de github lors de la recherche Google de l'erreur.
la source
Le référentiel ne prend plus en charge les certificats auto-signés. Vous devez mettre à niveau
npm
.Vous devez ouvrir une nouvelle session de terminal pour utiliser la mise à jour
npm
.Source: Il s'agissait à l'origine d'une modification de la réponse de jnylen . Bien que les lignes directrices disent "Nous nous félicitons de toutes les modifications constructives, mais veuillez les rendre substantielles", la modification a été rejetée en raison de "Cette modification change trop dans le message d'origine; la signification ou l'intention d'origine du message serait perdue." Je suppose que la communauté préfère une réponse distincte.
la source
sudo ln -s /usr/bin/nodejs /usr/bin/node
.Pour ceux qui sur un mac avec le même problème et ont installé npm via homebrew :
puis
Fonctionne pour moi sur OSX (10.9.1)
EDIT : vous devrez peut-être
brew update
avant d'installer npm. Vous pouvez également faire unbrew upgrade
après la mise à jour de l'homebrew. Il peut également être utile de l'exécuterbrew doctor
si vous rencontrez d'autres problèmes.la source
Solution rapide et propre (testée Linux) (Après fatidic 27 février 2014)
Désinstaller npm
Installez npm (la nouvelle URL est www.npmjs.org au lieu de npmjs.org )
Astuce : comment installer node.js sous linux https://stackoverflow.com/a/22099363/333061
la source
https://www.npmjs.org/install.sh
dans votre navigateur et la télécharger avant de l'exécuter manuellement.curl https://npmjs.org/install.sh
commande précédente redirige vershttps://www.npmjs.org/install.sh
c'est pourquoicurl https://www.npmjs.org/install.sh | sh
fonctionne de manière transparente. est OK pour installer à partir de maintenant le petit padawan. :)Désinstallez NPM et réinstallez-le.
Depuis le 27 février 2014, npm ne prend plus en charge ses certificats auto-signés. http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
Le lien ci-dessus suggère de mettre à niveau NPM à l'aide de NPM. Cela échoue également avec SELF_SIGNED_CERT_IN_CHAIN ...
la source
Désactiver SSL semble être une très mauvaise idée. Le blog de npm explique qu'ils ne prennent plus en charge leur certificat auto-signé. Ils suggèrent de mettre à jour npm via
npm install npm -g
, mais j'ai bien sûr eu la même erreur SELF_SIGNED_CERT_IN_CHAIN. Je viens donc de mettre à jour le nœud, qui a mis à jour npm avec lui. La procédure exacte dépend de la façon dont vous avez installé le nœud en premier lieu.la source