246 votes

npm ERR ! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY

J'essaie tous les moyens de créer une application react. J'ai essayé avec maven et maintenant j'essaie avec le système de construction crate-react-app de Facebook Incubators.

Quand j'ai essayé d'exécuter la commande create-react-app my-app dans l'environnement npm, il a fonctionné sur mon système personnel sans aucun problème. Mais lorsque j'ai essayé la même commande dans mon environnement de travail, j'ai rencontré cette erreur à l'invite de commande.

npm ERR! node v6.10.2
npm ERR! npm  v3.10.10
npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY

npm ERR! unable to get local issuer certificate
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

1 votes

Je ne pouvais pas non plus utiliser sudo quand j'ai couru npm install aws-sdk . Exécuter sudo npm install aws-sdk a provoqué cette erreur pour moi.

2 votes

Au cas où quelqu'un aurait tenté une variation de npm config set cafile avant d'utiliser une autre solution, qui peut être à l'origine de votre problème UNABLE_TO_GET_ISSUER_CERT_LOCALLY. Vous pouvez annuler chirurgicalement ce paramètre ou, si vous êtes comme moi et que vous voulez repartir à zéro, renommez simplement votre fichier .npmrc

3 votes

Seulement npm config set strict-ssl false a travaillé pour moi

453voto

Dinesh Points 1978

Une solution rapide issue de la recherche sur Internet était npm config set strict-ssl false et heureusement, ça a marché. Mais dans le cadre de mon environnement de travail, je suis obligé de mettre le drapeau strict-ssl à false.

Plus tard, j'ai trouvé une solution sûre et efficace,

npm config set registry http://registry.npmjs.org/  

cela a parfaitement fonctionné et j'ai obtenu un message de réussite Happy Hacking! en ne mettant pas l'indicateur strict-ssl à false.

5 votes

Moi aussi, je viens de revenir à l'utilisation de la version HTTP du référentiel NPM (par opposition à registre.npmjs.org ), puisque mon proxy de travail causait des problèmes (car il agit comme un MITM, causant des problèmes de vérification de certification). Un jour, je résoudrai le problème du certificat, mais j'avais juste besoin de télécharger un paquet, bon sang !

0 votes

Pour moi, c'est ce que j'ai fait mais je ne pouvais pas non plus utiliser sudo quand j'ai couru npm install aws-sdk . Exécuter sudo npm install aws-sdk a provoqué cette erreur pour moi.

3 votes

J'obtenais la même erreur que celle affichée sur ce post, alors j'ai exécuté npm config set strict-ssl false et npm config set registry http://registry.npmjs.org/ mais j'obtenais toujours l'erreur en exécutant sudo npm install aws-sdk mais quand j'ai laissé tomber le sudo et j'ai juste exécuté npm install aws-sdk ça a marché.

73voto

Martin Points 754

Il se peut que votre entreprise décrypte certains messages et les recrypte avec son certificat (que vous avez probablement déjà dans votre trousseau de clés ou dans vos certificats racine de confiance).

si vous utilisez node 7 ou plus, j'ai trouvé ce correctif pour être compatible avec node et node-gyp (pour Windows, vous devrez procéder différemment, mais il suffit d'ajouter cette variable d'environnement) :

export NODE_EXTRA_CA_CERTS="absolute_path_to_your_certificates.pem" (sous Windows, vous devrez peut-être enlever les guillemets)

le fichier pem peut contenir plusieurs certificats : https://nodejs.org/api/cli.html#cli_node_extra_ca_certs_file

assurez-vous que vos certificats sont au bon format pem (vous avez besoin de vrais sauts de ligne et non de sauts littéraux). \n )

Je n'ai pas réussi à le faire fonctionner avec des chemins relatifs ( . ou ~ )

Ce correctif indique essentiellement à npm et node-gyp d'utiliser la vérification par rapport aux CA normales, mais aussi d'autoriser ce certificat lorsqu'ils le rencontrent.

L'idéal serait de pouvoir utiliser les certificats de confiance de votre système, mais ce n'est malheureusement pas le cas.

2 votes

J'ai ce problème à cause de BlueCoat et je dois me référer à votre réponse tous les quelques mois. C'est définitivement une meilleure solution que de désactiver le SSL strict - merci !

7 votes

Où puis-je trouver le fichier .pem dans Windows. J'ai cherché le fichier pem sur tout le disque dur et je l'ai trouvé à quelques niveaux de profondeur dans Windows. \System32. Mais ça ne marche pas

3 votes

Parfait nous avons un proxy zscaler. J'ai téléchargé le certificat public der, converti en crt encodé en base64 et dans le dockerfile ajouté RUN export NODE_EXTRA_CA_CERTS="<path to cert">

39voto

Robert Dundon Points 310

Changer l'URL du repo NPM en HTTP est une solution rapide, mais je voulais utiliser HTTPS.

Dans mon cas, le proxy de mon employeur (ZScaler) posait problème (car il agit comme un MITM, ce qui entraîne des problèmes de vérification de la certification).

J'ai oublié que je trouvé un script qui aide à résoudre ce problème, ainsi que Git (pour le clonage des dépôts GitHub via HTTPS, le problème est le même) et je l'ai bifurqué pour mon usage

En gros, il fait ce qui suit pour git :

git config --global http.proxy http://gateway.zscaler.net:80/
git config --system http.proxy http://gateway.zscaler.net:80/

et pour Node, il ajoute proxy=http://gateway.zscaler.net:80/ à la fin de c:\Users\$USERNAME\npm\.npmrc

Cela a résolu le problème pour moi.

7 votes

Vous pouvez vérifier dans quel nuage ZS votre entreprise est configurée. En gros, vérifiez ip.zscaler.com pour le nom du nuage et le définir dans l'URL. Par exemple, s'il est écrit zscalertwo.net puis remplacez-la par l'URL suivante : gateway.zscalertwo.net

11voto

Jason Geiger Points 153

J'ai eu la même erreur. Il semble que cela soit lié aux certificats SSL. Si vous utilisez NPM pour des paquets publics (vous n'avez pas besoin de la sécurité de HTTPS), vous pouvez désactiver la validation stricte des clés SSL avec la commande suivante.

C'est peut-être la solution la plus simple si vous ne cherchez qu'à installer quelques paquets publics en une seule fois.

npm config set strict-ssl=false

9 votes

Il y a un risque inhérent à faire cela, si vous êtes victime d'une attaque malveillante de type man-in-the-middle, le paquet pourrait être modifié pendant que vous le téléchargez.

2 votes

@AlexKeySmith Vous avez raison. Cependant, les chances sont assez faibles. Cela pourrait être la seule option pour certains. Caveat Emptor

-4voto

Mohd Shariq Points 21

Le code ci-dessous a fonctionné pour moi parfaitement ici faire http seulement au lieu de https

npm config set registry http://registry.npmjs.org/

0 votes

Veuillez ne pas répéter les réponses existantes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X