web-dev-qa-db-fra.com

erreur d'installation npm - impossible d'obtenir le certificat de l'émetteur local

Je reçois une erreur unable to get local issuer certificate lors de l'installation de npm:

typings ERR! message Unable to read typings for "es6-shim". You should check the
 entry paths in "es6-shim.d.ts" are up to date
typings ERR! caused by Unable to connect to "https://raw.githubusercontent.com/D
efinitelyTyped/DefinitelyTyped/7de6c3dd94feaeb21f20054b9f30d5dabc5efabd/es6-shim
/es6-shim.d.ts"
typings ERR! caused by unable to get local issuer certificate

J'ai récemment mis à jour le noeud 4 à partir d'une version beaucoup plus ancienne et il semble que noeud soit beaucoup plus strict lorsque ce genre de problèmes se pose.

Il y a un problème discuté ici qui parle d’utiliser des fichiers ca, mais c’est un peu au-delà de ma compréhension et je ne sais pas quoi faire.

Je suis derrière un pare-feu d'entreprise, mais je peux accéder à l'URL sans erreur dans un navigateur.

Quelqu'un at-il une idée plus précise de ce problème et des solutions possibles?

Je me demande si je devrais revenir au noeud 0.12 dans l'intervalle :(

13
mindparse

Les saisies peuvent être configurées avec le fichier de configuration ~/.typingsrc. (~ signifie votre répertoire personnel)

Après avoir trouvé ce problème sur github: https://github.com/typings/typings/issues/120 , j’ai pu résoudre ce problème en créant ~/.typingsrc et en définissant cette configuration:

{
  "proxy": "http://<server>:<port>",
  "rejectUnauthorized": false
}

Cela semblait également fonctionner sans le paramètre proxy, alors peut-être a-t-il pu le détecter quelque part dans l'environnement.

Ce n'est pas une vraie solution, mais c'était suffisant pour que typings ignore les problèmes de pare-feu d'entreprise afin que je puisse continuer à travailler. Je suis sûr qu'il existe une meilleure solution sur le marché.

8
nfiles

Essayez ce npm config set strict-ssl false. C’est une alternative partagée dans cette URL https://github.com/nodejs/node/issues/3742

40
Sam Jacob Dev

Il y a un problème discuté ici qui parle d'utiliser des fichiers ca, mais je comprends un peu et je ne sais pas quoi faire à ce sujet.

Ce n'est pas trop difficile une fois que vous savez comment! Pour les fenêtres:

À l'aide de Chrome, accédez à l'URL racine dont NPM se plaint (donc https://raw.githubusercontent.com dans votre cas). Ouvrez les outils de développement et allez dans Sécurité-> Afficher le certificat. Vérifiez le chemin de certification et assurez-vous que votre certificat est au plus haut niveau, sinon ouvrez-le. Maintenant, allez dans "Détails" et exportez le certificat avec "Copier dans un fichier ...".

Vous devez convertir cela de DER en PEM. Il y a plusieurs façons de le faire, mais le moyen le plus simple que j'ai trouvé était un outil en ligne qui devrait être facile à trouver avec des mots clés pertinents. 

Maintenant, si vous ouvrez la clé avec votre éditeur de texte préféré, vous devriez voir 

-----BEGIN CERTIFICATE----- 

yourkey

-----END CERTIFICATE-----

C'est le format dont vous avez besoin. Vous pouvez le faire pour autant de clés que nécessaire et les combiner dans un seul fichier. Je devais faire github et les clés de registre npm dans mon cas.

Maintenant, éditez votre fichier .npmrc pour qu'il pointe vers le fichier contenant vos clés,

cafile=C:\workspace\rootCerts.crt

J'ai personnellement constaté que cela fonctionnait nettement mieux derrière notre mandataire d'entreprise, par opposition à l'option strict-ssl. YMMV.

5
Tim L

A disclaimer: Cette solution est moins sécurisée, mauvaise pratique, ne le faites pas. J'ai eu un message d'erreur en double - je suis derrière un VPN/pare-feu d'entreprise. J'ai pu résoudre ce problème en ajoutant un fichier .typingsrc à mon répertoire utilisateur (C:\Users\MyUserName\.typingsrc dans Windows). Bien sûr, chaque fois que vous contournez SSL, vous devriez vous adresser à vos administrateurs système pour résoudre le problème du certificat.

Modifiez l'URL du registre de https à http et, comme indiqué dans le répondeur de nfiles ci-dessus, définissez rejetUnauthorized sur false.

.typingsrc (placé dans le répertoire du projet ou dans le répertoire racine de l'utilisateur)

{
     "rejectUnauthorized": false,
     "registryURL": "http://api.typings.org/"
}

Ajoutez éventuellement votre jeton github (je n'ai trouvé le succès qu'après l'avoir ajouté aussi.)

{
    "rejectUnauthorized": false,
    "registryURL": "http://api.typings.org/",
    "githubToken": "YourGitHubToken"
}

Voir les instructions pour configurer votre jeton github à https://github.com/blog/1509-personal-api-tokens

1
Benson

Bien, ce n’est pas une bonne réponse, mais peut être considéré comme une solution de contournement rapide. La bonne réponse est de désactiver le SSL strict.

J'ai la même erreur

PhantomJS introuvable sur PATH
Téléchargement https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-windows.Zip
Enregistrement dans C:\Utilisateurs\Sam\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.Zip
Recevoir ... 

Erreur lors de la demande.
Erreur: impossible d'obtenir le certificat de l'émetteur local
à TLSSocket. (_tls_wrap.js: 1105: 38)
à emitNone (events.js: 106: 13)
sur TLSSocket.emit (events.js: 208: 7)
sur TLSSocket._finishInit (_tls_wrap.js: 639: 8)
à TLSWrap.ssl.onhandshakedone (_tls_wrap.js: 469: 38) 

Donc, après avoir lu l'erreur. 

Vous venez de télécharger le fichier manuellement et de le placer sur le chemin requis . i.e

C:\Users\Sam\AppData\Local\Temp\phantomjs\

Cela a résolu mon problème. 

    PhantomJS not found on PATH                                                                                                
Download already available at C:\Users\sam\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.Zip                    
Verified checksum of previously downloaded file                                                                            
Extracting Zip contents                                    
0
Sam