npm ERR! kod UNABLE_TO_GET_ISSUER_CERT_LOCALLY


118

React uygulaması oluşturmanın tüm yollarını deniyorum. Maven ile denedim ve şimdi Facebook Incubators'dan crate-react-app oluşturma sistemi ile çalışıyorum.

Komutu create-react-app my-appnpm ortamında çalıştırmayı denediğimde , kişisel sistemimde sorunsuz çalıştı. Ancak aynı komutu çalışma ortamımda denediğimde, komut isteminde bu hatayla karşılaştım

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
Ben de sudokoşarken kullanamadım npm install aws-sdk. Koşmak sudo npm install aws-sdkbenim için bu hataya neden oldu.
Kyle Bridenstine

Yanıtlar:


296

İnternet aramasından hızlı bir çözüm npm config set strict-ssl false, neyse ki işe yaradı. Ancak çalışma ortamımın bir parçası olarak, sıkı ssl bayrağını yanlış olarak ayarlamakla sınırlandırıldım.

Daha sonra güvenli ve çalışan bir çözüm buldum,

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

bu mükemmel çalıştı ve Happy Hacking!katı ssl bayrağını yanlış olarak ayarlamayarak bir başarı mesajı aldım .


2
Ben de NPM deposunun HTTP sürümünü kullanmaya döndüm ( kayıt defteri.npmjs.org'un aksine ), çünkü çalışma proxy'm sorunlara neden oluyordu (MITM gibi davranarak sertifika doğrulama sorunlarına neden oluyordu) Bir gün anlayacağım sertifika sorununu çözdüm, ancak bir paketi indirmem gerekiyordu, kahretsin!
Robert Dundon

1
Zaten bu ayara sahip olduğumu düşündüm ama daha yakından baktığımda http ( kayıt.npmjs.org ) yerine https vardı . Http olarak değiştirildi ve işe yaradı.
Ashish Bajpai

Benim için bunu yaptım ama sudokoşarken de kullanamadım npm install aws-sdk. Koşmak sudo npm install aws-sdkbenim için bu hataya neden oldu.
Kyle Bridenstine

Bu yazıda gösterilen aynı hatayı alıyordum, bu yüzden koştum npm config set strict-ssl falseve npm config set registry http://registry.npmjs.org/ çalışırken hala hatayı alıyordum sudo npm install aws-sdkama sudoparçayı düşürdüğümde ve sadece npm install aws-sdkçalıştığında çalıştı.
Kyle Bridenstine

benim için ayarı dışında hiçbir şey npm config set strict-ssl falseçalışmıyor. Bu bir şeydir hissetmek node.jsve npmonlar için tamir edilebilir değilse etrafında düzgün bir çalışma ile takım içine bakmak gerekir ve belge.
RinoTom

23

şirketinizin belirli trafiğin şifresini çözmesi ve sertifikası ile yeniden şifrelemesi olabilir (muhtemelen zaten anahtar zincirinizde veya güvenilir kök sertifikalarınızda vardır)

node 7 veya sonraki bir sürümünü kullanıyorsanız, bu düzeltmenin node ve node-gyp ile uyumlu olduğunu buldum (Windows için bunu farklı bir şekilde yapmanız gerekir, ancak temelde bu ortam değişkenini eklemeniz gerekir):

export NODE_EXTRA_CA_CERTS="absolute_path_to_your_certificates.pem" (Windows'ta tırnak işaretlerini kaldırmanız gerekebilir - yorumlara bakın)

pem dosyası birden fazla sertifikaya sahip olabilir: https://nodejs.org/api/cli.html#cli_node_extra_ca_certs_file

Sertifikalarınızın uygun pem formatında olduğundan emin olun (gerçek satır sonlarına ihtiyacınız var değil \n)

Göreceli yollarla çalışmasını sağlayamadım ( .veya ~)

Bu düzeltme temel olarak npm ve node-gyp'e denetimi normal CA'lara göre kullanmasını söyler, ancak aynı zamanda bu sertifikaya rastlandığında da izin verir.

İdeal olarak, sisteminizin güvenilir sertifikalarını kullanabilirsiniz, ancak maalesef durum böyle değil.


Harika. Ayrıntılı açıklamanız için oy verin. Daha iyi anlamama yardımcı oldu. Güzel bilgi.
vissu

2
Windows'ta, tırnak işaretlerini kaldırmadıkça yol çalışmadı.
Chris Anderson

1
BlueCoat nedeniyle bu sorunu yaşıyorum ve cevabınıza birkaç ayda bir başvurmam gerekiyor. Katı SSL'yi devre dışı bırakmaktan kesinlikle daha iyi bir çözüm - teşekkür ederiz!
Jordan Grey

1
Windows'ta .pem dosyasını nerede bulabilirim. Windows \ System32 içinde birkaç düzey bulunan pem dosyası için tüm HardDisk'i aradım. Ama işe yaramıyor
Sanchit Jain

10

NPM repo URL'sini HTTP olarak değiştirmek hızlı bir çözüm olarak çalışıyor, ancak HTTPS kullanmak istedim.

Benim durumumda, işverenimdeki (ZScaler) vekil sorunlara neden oluyordu (MITM gibi davranarak sertifika doğrulama sorunlarına neden olduğu için)

Buna ve Git'e yardımcı olan bir komut dosyası bulduğumu unuttum (GitHub depolarını HTTPS aracılığıyla klonlamak için de aynı sorun vardı) ve kullanımım için çatalladım

Temel olarak git için aşağıdakileri yapar:

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

ve Node proxy=http://gateway.zscaler.net:80/için, sonuna eklerc:\Users\$USERNAME\npm\.npmrc

Bu benim için sorunu çözdü.


2
Şirketinizin hangi ZS bulutunda yapılandırıldığını kontrol etmek isteyebilirsiniz. Temel olarak, ip.zscaler.combulut adını kontrol edin ve bunu URL'de ayarlayın. Örneğin: zscalertwo.netgateway.zscalertwo.net
yazıyorsa

6

Bulabildiğim her çözümü denedikten sonra:

  • Katı SSL'yi kapatma: npm config set strict-ssl=false
  • Kayıt defterini https yerine http olarak değiştirme: npm config set registry http://registry.npmjs.org/
  • Kafe ayarımı değiştirmek: npm config set cafile /path/to/your/cert.pem
  • Bilinmeyen CA'ları reddetmeyi durdurun: set NODE_TLS_REJECT_UNAUTHORIZED=0

Şu anda benim için en iyi çalışan çözüm , var olan CA'ları .npmrc dosyanızdaki cafile seçeneğiyle değiştirmek yerine genişleten NODE_EXTRA_CA_CERTS ortam değişkenini kullanmaktır . Bunu terminalinize girerek ayarlayabilirsiniz:NODE_EXTRA_CA_CERTS=path/to/your/cert.pem

Tabii ki, bu değişkeni her seferinde ayarlamak can sıkıcı olabilir, bu yüzden onu bash profilime ekledim, böylece terminali her açtığımda ayarlanacak. Halihazırda bir ~/.bash_profiledosyanız yoksa, bir tane oluşturun. Sonra bu dosyanın sonuna ekleyin export NODE_EXTRA_CA_CERTS=path/to/your/cert.pem. Ardından, .npmrc dosyanızın cafile ayarını kaldırın.


Dördüncü seçenek cazibeydi; process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0;
tomdemuyt

5

İnan bana, bu senin için çalışacak:

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

Bu bağlantı soruyu cevaplayabilirken, cevabın temel kısımlarını buraya eklemek ve referans için bağlantıyı sağlamak daha iyidir. Bağlantılı sayfa değişirse, yalnızca bağlantı yanıtları geçersiz hale gelebilir. Danışın Cevap Nasıl nasıl cevap sorulara hakkında daha fazla bilgi için
Artog

4

Aynı hatayı yaptım. Görünüşe göre SSL sertifikalarıyla ilgili. Genel paketler için NPM kullanıyorsanız (HTTPS güvenliğine gerek duymuyorsanız), aşağıdaki komutla katı SSL anahtar doğrulamasını kapatabilirsiniz.

Herkese açık birkaç paketi bir defada kurmak istiyorsanız, bu en basit çözüm olabilir.

npm config set strict-ssl=false

5
Bunu yapmanın doğal bir riski vardır, eğer ortadaki hain bir adam saldırısının kurbanıysanız, paket indirilirken değiştirilebilir.
Alex KeySmith

@AlexKeySmith Haklısınız. Ancak, oranlar oldukça düşük. Bu, bazıları için tek seçenek olabilir. Caveat Emptor
Jason Geiger

1

Npm'yi güncellemeye çalışırken bu hatayı aldım, ancak AWS Linux'ta yum'dan gerçekten eski bir sürüm (1.3.6!) Yükledim. Daha yeni bir npm sürümünü manuel olarak yükleyebildim ve her şey düzeltildi.


0

Aşağıdaki kod benim için mükemmel çalıştı, burada http yerine https yapın

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

0

Benim durumumda, bir noktada global yapılandırmamı bir proje için tasarlanmış bir sertifikayı kullanacak şekilde ayarladım.

npm config list

/path/to/global/.npmrc
NODE_EXTRA_CA_CERTS = "./certs/chain.pem"

Dosyayı açtım, satırı kaldırdım ve npm installtekrar çalıştım.


0

aşağıdaki hatayı aldım

PS C: \ Kullanıcılar \ chpr \ Belgeler \ GitHub \ vue-nwjs-saat-izleme> npm yükleme vue npm ERR! kod UNABLE_TO_GET_ISSUER_CERT_LOCALLY npm ERR! errno UNABLE_TO_GET_ISSUER_CERT_LOCALLY npm ERR! https://registry.npmjs.org/vue isteği başarısız oldu, neden: yerel yayıncı sertifikası alınamıyor

npm ERR! Bu çalışmanın tam günlüğü şurada bulunabilir: npm ERR!
C: \ Users \ chpr \ AppData \ Roaming \ npm-cache_logs \ 2020-07-29T03_22_40_225Z-debug.log PS C: \ Users \ chpr \ Documents \ GitHub \ vue-nwjs-hours-tracking> PS C: \ Users \ chpr \ Documents \ GitHub \ vue-nwjs-saat-izleme> npm ERR!
C: \ Users \ chpr \ AppData \ Roaming \ npm-cache_logs \ 2020-07-29T03_22_40_225Z-debug.log

Aşağıdaki komut sorunu çözdü:

npm config set strict-ssl false
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.