Saya menggunakan npm v1.0.104 / node 0.6.12 di ubuntu - Saya menerima kesalahan yang disalin di bawah ketika mencoba untuk menginstal modul baru melalui npm (saya menguji socket.io sebelumnya menggunakan http, bukan https meskipun & saya bertanya-tanya apakah itu bisa telah menghasilkan masalah dengan npm / sertifikat tidak bertanda tangan). Kesalahan muncul setelah npm mencoba menyelesaikan URL ' https://registry.npmjs.org '. Adakah di sana saya dapat mengabaikan kesalahan atau mungkin mencari / menambahkan sertifikat ke toko tepercaya untuk terus menggunakan npm.
Setiap wawasan tentang apa yang perlu dilakukan untuk menyelesaikan masalah akan dihargai (Saya lebih suka menyelesaikan masalah melalui konfigurasi yang bertentangan dengan menginstal ulang jika memungkinkan).
Kesalahan: "Kesalahan: Kesalahan SSL: SELF_SIGNED_CERT_IN_CHAIN"
Pesan lengkap:
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
sumber
Jawaban:
Menjalankan yang berikut ini membantu menyelesaikan masalah:
Saya tidak dapat mengomentari apakah itu akan menyebabkan masalah lain pada saat ini. Semoga ini bisa membantu.
sumber
Pada 27 Februari 2014, npm tidak lagi mendukung sertifikat yang ditandatangani sendiri . Opsi berikut, seperti yang direkomendasikan oleh npm, adalah melakukan salah satu dari yang berikut:
Tingkatkan versi npm Anda
-- ATAU --
Beri tahu versi npm Anda saat ini untuk menggunakan pendaftar yang dikenal
Pembaruan: npm telah memposting Lebih banyak bantuan dengan SELF_SIGNED_CERT_IN_CHAIN dan npm dengan lebih banyak solusi khusus untuk lingkungan yang berbeda
Anda mungkin atau mungkin tidak perlu bergantung
sudo
pada rekomendasi.Pilihan lain
Tampaknya orang mengalami masalah menggunakan rekomendasi npm, jadi berikut adalah beberapa solusi potensial lainnya.
Tingkatkan Node itu sendiri
Menerima kesalahan ini mungkin menyarankan Anda memiliki versi node yang lebih lama, yang secara alami datang dengan versi npm yang lebih lama. Salah satu solusinya adalah meningkatkan versi Node Anda. Ini kemungkinan merupakan opsi terbaik karena memberi Anda informasi terkini dan memperbaiki bug dan kerentanan yang ada.
Proses di sini tergantung pada bagaimana Anda menginstal Node, sistem operasi Anda, dan sebaliknya.
Perbarui npm
Menjadi yang mungkin Anda dapatkan di sini saat mencoba
install
paket, ada kemungkinan yangnpm install npm -g
gagal dengan kesalahan yang sama. Jika ini masalahnya, gunakanupdate
saja. Seperti yang disarankan oleh Nisanth Sojan:Perbarui alternatif npm.
Salah satu cara mengatasi masalah mendasar adalah dengan menggunakan pendaftar yang dikenal, instal, dan kemudian berhenti menggunakan pendaftar yang dikenal. Seperti yang disarankan oleh jnylen:
sumber
npm config set ca ""
dulu, kemudian tingkatkan, lalu batalkan perubahan konfigurasi. Lihat: stackoverflow.com/a/22099006/106302sudo
mengubah pengguna,-g
menandai set apakah akan menginstal secara global untuk pengguna itu atau hanya di lokalnode_modules
.Untuk saat ini saya hanya mengganti URL registri dari https ke http. Seperti ini:
sumber
Untuk menyimpannya secara global
sumber
cb() never called!
kesalahan npm yang terkenalAnda perlu memutakhirkan npm.
Anda mungkin perlu mengawali perintah-perintah itu dengan
sudo
.Sumber: http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
sumber
sudo
diperlukan sama sekali, dan hanya mengawali perintah upgrade dengansudo
bekerja dengan baik untuk saya. YMMV.Kesalahan
SELF_SIGNED_CERT_IN_CHAIN
berarti bahwa Anda memiliki sertifikat yang ditandatangani sendiri dalam rantai sertifikat yang pada dasarnya tidak dipercaya oleh sistem.Jika itu terjadi, pada dasarnya sesuatu yang mencurigakan sedang terjadi, oleh karena itu seperti yang sudah dikomentari orang, tidak disarankan untuk hanya menonaktifkan pemeriksaan sertifikat, tetapi pendekatan yang lebih baik adalah memahami apa masalahnya dan memperbaiki penyebabnya.
Ini mungkin terkait dengan:
alamat repositori khusus yang tidak memiliki sertifikat yang tepat,
jaringan perusahaan dengan proxy transparan.
Jika Anda berada di belakang proxy web perusahaan, Anda harus mengatur variabel lingkungan
HTTP_PROXY
/ tepatHTTPS_PROXY
atau mengaturnya melaluinpm
:Lihat: Cara mengatur Node.js dan Npm di belakang proksi web perusahaan
Jika Anda mempercayai tuan rumah, Anda dapat mengekspor sertifikat yang ditandatangani sendiri dari rantai dan mengimpornya ke sistem, sehingga ditandai sebagai tepercaya.
Ini dapat dicapai dengan memeriksa sertifikat dengan (ubah
example.com
menjadi repo npm yang gagal berdasarkan padanpm-debug.log
):kemudian simpan konten sertifikat (antara
BEGIN
danEND
) ke dalam.crt
file untuk mengimpornya.Linux
Sesuai saran , Anda dapat menambahkan sertifikat yang diekspor ke
/etc/environment
file (Node 7.4+), seperti:CentOS
Pada CentOS 5 ini dapat ditambahkan ke
/etc/pki/tls/certs/ca-bundle.crt
file, misCatatan: Untuk hanya mengekspor sertifikat pertama, hapus
g
di awal.Di CentOS 6, file sertifikat dapat disalin ke
/etc/pki/ca-trust/source/anchors/
.Ubuntu / Debian
Di Ubuntu / Debian, salin file CRT ke
/usr/local/share/ca-certificates/
kemudian jalankan:macOS
Di macOS Anda dapat menjalankan:
Windows
Di Windows:
certutil -addstore -f "ROOT" new-root-certificate.crt
Lihat juga: npm - Pemecahan masalah - Kesalahan SSL
sumber
Menempatkan ini sebelum perintah tampaknya berhasil
NODE_TLS_REJECT_UNAUTHORIZED=0
. ex:NODE_TLS_REJECT_UNAUTHORIZED=0 npm ...
Akan lebih baik untuk mengetahui bagaimana membuat simpul melihat sertifikat yang ditandatangani sendiri sebagai valid. saran ketat-ssl di atas tidak bekerja untuk saya karena alasan tertentu Jika Anda memahami implikasi keamanan dan memerlukan perbaikan cepat sementara, inilah yang saya temukan dalam beberapa masalah github acak selama pencarian kesalahan di Google.
sumber
Repositori tidak lagi mendukung sertifikat yang ditandatangani sendiri. Anda perlu meningkatkan
npm
.Anda harus membuka sesi terminal baru untuk menggunakan yang diperbarui
npm
.Sumber: Ini awalnya merupakan edit pada jawaban jnylen . Meskipun pedoman mengatakan "Kami menyambut semua pengeditan yang konstruktif, tapi tolong buat itu substansial," pengeditan ditolak karena "Pengeditan ini terlalu banyak berubah di pos asli; makna atau maksud asli dari pos akan hilang." Saya kira komunitas lebih suka jawaban yang terpisah.
sumber
sudo ln -s /usr/bin/nodejs /usr/bin/node
.Bagi mereka yang menggunakan mac dengan masalah yang sama dan menginstal npm melalui homebrew :
kemudian
Bekerja untuk saya di osx (10.9.1)
EDIT : Anda mungkin perlu
brew update
sebelum menginstal npm. Anda juga dapat melakukanbrew upgrade
setelah memperbarui homebrew. Mungkin juga akan membantubrew doctor
jika Anda mengalami masalah lain.sumber
Solusi cepat dan bersih (diuji linux) (Setelah fatidic 27 Februari 2014)
Copot npm
Instal npm (URL baru adalah www.npmjs.org, bukan npmjs.org )
Kiat : cara menginstal node.js di linux https://stackoverflow.com/a/22099363/333061
sumber
https://www.npmjs.org/install.sh
peramban dan mengunduhnya sebelum menjalankannya secara manual.curl https://npmjs.org/install.sh
perintah sebelumnya diarahkan kehttps://www.npmjs.org/install.sh
itu sebabnyacurl https://www.npmjs.org/install.sh | sh
bekerja dengan lancar. tidak apa-apa untuk menginstal mulai sekarang padawan kecil. :)Hapus instalan NPM dan pasang kembali.
Pada 27 Februari 2014, npm tidak lagi mendukung sertifikat yang ditandatangani sendiri. http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
Tautan di atas menyarankan untuk meningkatkan NPM menggunakan NPM. Ini juga gagal dengan SELF_SIGNED_CERT_IN_CHAIN ...
sumber
Mematikan SSL sepertinya ide yang sangat buruk. Blog npm menjelaskan bahwa mereka tidak lagi mendukung sertifikat yang ditandatangani sendiri. Mereka menyarankan untuk meningkatkan npm melalui
npm install npm -g
, tetapi saya tentu saja mendapatkan kesalahan SELF_SIGNED_CERT_IN_CHAIN yang sama. Jadi saya baru saja memperbarui simpul, yang diperbarui npm bersama dengannya. Prosedur yang tepat tergantung pada bagaimana Anda menginstal node di tempat pertama.sumber