nodejs “npm ERR! code SELF_SIGNED_CERT_IN_CHAIN”

Ik ben nieuw bij nodejs en npm. Ik probeer log4js te installeren en dit is de opdracht voor de installatie:

npm install log4js

Ik voer dit uit vanaf de Windows-opdrachtregel en na een tijdje draaien van een marker krijg ik de volgende foutmelding:

npm ERR! Windows_NT 6.3.9600
npm ERR! argv "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "log4js"
npm ERR! node v0.12.0
npm ERR! npm  v2.5.1
npm ERR! code SELF_SIGNED_CERT_IN_CHAIN
npm ERR! self signed certificate in certificate chain
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <http://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
npm ERR!     C:\srv\npm-debug.log

Ik heb geprobeerd npm config set ca=""uit te voeren zoals hier wordt gesuggereerd: http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-moremaar ik krijg nog steeds deze foutmelding.

Hoe kan ik dit oplossen en NPM’s installeren?


Antwoord 1, autoriteit 100%

Als u de strict-ssl-modus uitschakelt, wordt deze fout verwijderd.

npm set strict-ssl false

Aangezien SSL-beveiliging hierdoor wordt uitgeschakeld, moeten we dit als laatste stap proberen als de onderstaande twee stappen niet helpen.

Dit probleem kan optreden als gevolg van incompatibiliteit tussen het SSL-certificaatbestand van npm en het node-register.

Probeer

1) vertel uw huidige versie van npm om node’s ca te gebruiken in plaats van ingebouwde ca

npm config set ca=""

2) OF uw versie van npm upgraden

npm install npm -g --ca=null


Antwoord 2, autoriteit 36%

Ik had hetzelfde probleem met Windows 10.

open windows powerShell en voer de volgende opdracht in:

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

Dan kun je het volgende gebruiken:

npm install [your package]

Antwoord 3, autoriteit 8%

Zoals gezegd door Akshay Vijay Jain hierboven,

npm config set strict-ssl false

SSL UITSCHAKELEN VOORDAT U DE LAATSTE VERSIE INSTALLEERT:

SSL UITSCHAKELEN VOORDAT U DE LAATSTE VERSIE INSTALLEERT

Installeer vervolgens de nieuwste versie

npm install -g [email protected]

INSTALLEER SUCCES!!:

INSTALLEER SUCCES!!

Bekijk de screenshots die voor de duidelijkheid zijn toegevoegd.


Antwoord 4, autoriteit 7%

Ik ben ook nieuw bij npm. Naast de commando’s die in je link worden genoemd, heb ik het volgende geprobeerd en het loste mijn problemen op:

  • npm set strict-ssl false
  • McAfee tijdelijk uitgeschakeld

Referentie: Npm SELF_SIGNED_CERT_IN_CHAIN ​​op Azure


Antwoord 5, autoriteit 4%

Hoewel het instellen van StrictSsl op false een optie is, brengt het uw npm-beveiliging in gevaar. Ik raad aan om het niet uit te schakelen. De volgende instructies gaan dieper in op Shreedhar’s post om het cafile te gebruiken. Hoewel het is geschreven vanuit een Windows 10-machineperspectief, kan het worden aangepast.

Ons bedrijf gebruikt SSL Inpsection via een proxy, dus we moeten op zijn minst het SSL-inspectiecertificaat opnemen. Bij de volgende instructies wordt ervan uitgegaan dat u een moderne webbrowser kunt gebruiken op de computer waarop u een extern bereikbare npm-functie probeert te gebruiken.

  1. Voer vanuit een opdrachtconsole het volgende uit: npm config list
  2. Noteer de waarde voor metrics-registry. Dit zou een URL moeten zijn.
  3. Open een browser naar de URL. Op het moment van schrijven van dit antwoord is het https://registry.npmjs.org/
  4. Open de certificaatinformatie voor de site. Voor Chrome op Windows houdt dit in dat u op het hangslotpictogram links van de URL in de adresbalk klikt en de optie Certificaatselecteert.
  5. Inspecteer het certificeringspad. Voor mij is er onze corporate CA en ons SSL-inspectiecertificaat.
  6. Download elk certificaat als Base64 gecodeerd in een .cer- of .crt-bestand.
  7. Compileer alle certificaten zoals ze zijn in één .cer- of .crt-bestand.
  8. Plaats dit bestand in een gebruikersmap. Hoewel we een op het netwerk gebaseerde gebruikersmap hebben, raad ik aan en gebruik een op een lokale machine gebaseerde map. Noteer het volledige pad naar dit bestand.
  9. Voer het volgende uit vanaf een opdrachtconsole: npm config set cafile "C:\Local\Path\To\cafile4npm.cer"pas het pad en bestand aan zoals vermeld in stap 8.
  10. Voer uw npm install-opdracht uit.

Antwoord 6, autoriteit 2%

Kreeg dezelfde fout bij uitvoering via Docker build.
De uitvoering van Powershell was echter vrij van fouten. Wijzig vervolgens het dockerbestand met het volgende (zoals hierboven gesuggereerd):

RUN npm config set ca=””

RUN npm set strict-ssl false

Hiermee is het probleem met de certificaatketen opgelost.


Antwoord 7

Vanaf 27 februari 2014, npm ondersteunt zijn zelfondertekende certificaten niet langer.De volgende opties, zoals aanbevolen door npm, zijn een van de volgende opties:

Upgrade uw versie van npm

npm install npm -g --ca=""

— OF —

Vertel uw huidige versie van npm om bekende registrars te gebruiken

npm config set ca ""

Update:npm heeft Meer hulp bij SELF_SIGNED_CERT_IN_CHAIN ​​en npmmet meer specifieke oplossingen voor verschillende omgevingen

Lees hier


Antwoord 8

los dit probleem op met deze opdracht

npm config set strict-ssl=false

Antwoord 9

Heb je ook de instellingen cafilegeprobeerd om alle pems in één bestand op te nemen? npm root-CA toevoegen

Als u proxy gebruikt in uw .npmrc-bestand, raad ik u aan om de omgevingsvariabele no_proxyin te stellen met de waarde van uw <server IP address>


Antwoord 10

In CentOS en andere Linux-distributies moet je NPM configureren om je Certificate Authorities-bestand te gebruiken:

npm config set cafile "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" -g

Controleer uiteraard of het bestand bestaat en alle CA Roots bevat die u kunt tegenkomen (bijv. bedrijfsproxy).


Antwoord 11

In mijn geval had ik Fiddler geïnstalleerd, dat een zelfondertekend certificaat heeft waardoor de npm-installatie gek werd.

Zie hier hoe u het zelfondertekende Fiddler-certificaat verwijdert Hoe verwijder je het root-CA-certificaat dat Fiddler installeert


Antwoord 12

Geen van de bovenstaande antwoorden heeft mijn situatie geholpen. De boosdoener bleek de pakketagent te zijn vóór 6.0.1. De eigenaar heeft inderdaad toegegeven dat hij zelfondertekende certificaten in een testmap van zijn pakket heeft verzonden. Dit dwong een herinstallatie van -D en -g, maar het probleem doet zich nog steeds voor.

Ik heb dit certificaat gevonden door in de map node_modules te zoeken naar *.pem.

Ik ben nog steeds bezig om npm-caches te krijgen om naar me te luisteren. Natuurlijk ben ik de dummy, toch?

Ik zal aanvullende bevindingen posten.

Oplossing gevonden

7/7/2020

Onze Angular-applicatie is vandaag geüpgraded van 8.3 naar 10.0. Raad eens? De fouten verdwenen. De hoofdoorzaak was dat iemand een niet-ondertekend certificaat publiceerde dat het veel te diep in de bibliotheek van NPM-modules maakte. Zelfs NPM 6.15 had het!


Antwoord 13

Ik heb hier veel oplossingen geprobeerd en geen enkele werkte echt voor mij. Ik heb geprobeerd npm bij te werken, maar kreeg een time-out (wanneer het register was ingesteld op http://registry.npmjs.org/), of een 403 Forbidden reactie (wanneer het register was ingesteld op https://registry.npmjs.org/)

Uiteindelijk realiseerde ik me dat mijn probleem werd veroorzaakt door achter een proxy te zitten, wat deeduiteindelijk voor mij werkte:

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

(credit: https://stackoverflow.com/a/12832637/4191296)


Antwoord 14

Ik heb node js en angular cli opnieuw geïnstalleerd. Het begon te werken !!


Antwoord 15

U kunt certificaatvalidatie voor TLS-verbindingen uitschakelen:

NODE_TLS_REJECT_UNAUTHORIZED=0 npm install puppeteer


Antwoord 16

Als je een ander certificaat wilt vertrouwen, denk ik dat het beter is om de omgevingsvariabele te definiëren om het nieuwe certificaat te vertrouwen
NODE_EXTRA_CA_CERTS=<pad naar .pem-bestand>
https://nodejs.org/api/cli.html#cli_node_extra_ca_certs_file


Antwoord 17

In mijn geval heb ik squid aanvankelijk ingesteld om alle http & https-verzoeken op mijn lokale ubuntu-box, maar wist niet dat TLS-versie >= 1.3 ssl-bump, peek en splice TLS-handshake-functies vereist.

Het volgende kan anderen helpen te begrijpen wat er “onder de motorkap” gebeurt, zodat u erop kunt vertrouwen dat uw oplossing correct is. Als je geen inktvis gebruikt, sla dat deel dan over, maar let op de laatste npm-stap.

Hier zijn de stappen om squid te upgraden:

  1. Installeer een upgrade-patch geleverd door diladele. Ik heb ook uitgevoerd: apt upgrade na apt update
  2. Gebruik deze tutorialom upgrade squid-configuratie als aanvulling op de nieuwe ssl-bump-functies
  3. Env vars toevoegen HTTP_PROXY=http://uw.proxy.domein:3128 HTTPS_PROXY=http://uw.proxy.domein:3128
  4. Stel Firefox en/of Chrome in om squid als http/https-proxy te gebruiken

Als u npm ssl-installatie wilt inschakelen, voegt u de proxy ca-certificate.pem toe aan de npm-configuratie

  1. npm-configuratieset cafile /etc/squid/certs/squid-ca-cert.pem

Na het uitvoeren van stap 5 werkte de npm-installatie van https://registry.npmjs.orgprima

Other episodes