Kesalahan Sertifikat Curl saat Menggunakan RVM untuk menginstal Ruby 1.9.2

90

RVM mengalami kesalahan sertifikat saat mencoba mengunduh Ruby 1.9.2. Sepertinya curlmengalami masalah sertifikat, tetapi saya tidak yakin cara melewatinya. Saya telah menyertakan info kesalahan persisnya di bawah.

$ rvm install 1.9.2
Installing Ruby from source to: /Users/willdennis/.rvm/rubies/ruby-1.9.2-p180, this may take a while depending on your cpu(s)...

ruby-1.9.2-p180 - #fetching 
ERROR: Error running 'bunzip2 '/Users/willdennis/.rvm/archives/ruby-1.9.2-p180.tar.bz2'', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/extract.log
ruby-1.9.2-p180 - #extracting ruby-1.9.2-p180 to /Users/willdennis/.rvm/src/ruby-1.9.2-p180
ruby-1.9.2-p180 - #extracted to /Users/willdennis/.rvm/src/ruby-1.9.2-p180
Fetching yaml-0.1.3.tar.gz to /Users/willdennis/.rvm/archives

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
ERROR: There was an error, please check /Users/willdennis/.rvm/log/ruby-1.9.2-p180/*.log. Next we'll try to fetch via http.
Trying http:// URL instead.

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
ERROR: There was an error, please check /Users/willdennis/.rvm/log/ruby-1.9.2-p180/*.log
Extracting yaml-0.1.3.tar.gz to /Users/willdennis/.rvm/src
ERROR: Error running 'tar zxf /Users/willdennis/.rvm/archives/yaml-0.1.3.tar.gz -C /Users/willdennis/.rvm/src --no-same-owner', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/yaml/extract.log
/Users/willdennis/.rvm/scripts/functions/packages: line 55: cd: /Users/willdennis/.rvm/src/yaml-0.1.3: No such file or directory
Configuring yaml in /Users/willdennis/.rvm/src/yaml-0.1.3.
ERROR: Error running ' ./configure --prefix="/Users/willdennis/.rvm/usr"  ', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/yaml/configure.log
Compiling yaml in /Users/willdennis/.rvm/src/yaml-0.1.3.
ERROR: Error running '/usr/bin/make ', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/yaml/make.log
Installing yaml to /Users/willdennis/.rvm/usr
ERROR: Error running '/usr/bin/make install', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/yaml/make.install.log
ruby-1.9.2-p180 - #configuring 
ERROR: Error running ' ./configure --prefix=/Users/willdennis/.rvm/rubies/ruby-1.9.2-p180 --enable-shared --disable-install-doc --with-libyaml-dir=/Users/willdennis/.rvm/usr ', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/configure.log
ERROR: There has been an error while running configure. Halting the installation.

Bagaimana cara mengatasi atau menghindari kesalahan ini?

Will Dennis
sumber
Sudahkah Anda menginstal semua dependensi sebelumnya untuk mengkompilasi versi Ruby itu?
Malam
Seluruh masalah dan solusi yang disarankan dinyatakan dalam pesan kesalahan yang sangat panjang. Saya rasa mengulangi teks itu dalam jawaban di sini tidak akan banyak membantu. Mulailah dengan membaca di URL yang disebutkan.
Daniel Stenberg
2
@daniel Kecuali cara biasa untuk membuat curl berhenti mengeluh tentang sertifikat SSL yang buruk, -k, tidak dapat digunakan di sini, karena curl digerakkan oleh rvm. BTW, Anda harus memikirkan dengan hati-hati apakah Anda benar-benar ingin mengizinkan curl mengabaikan sertifikat SSL yang buruk. Satu hal yang dapat Anda coba adalah memberi curl bundel CA yang lebih baru . Jawaban @ Dorothy di bawah ini akan bekerja.
Dan Barowy
@dan: jadi baca lagi pesan kesalahannya. Ini tidak secara khusus menyarankan Anda mengabaikan sertifikat yang buruk (saya menulis pesan kesalahan itu), ini dengan jelas menjelaskan apa yang dapat Anda lakukan dan itu memberikan URL dengan deskripsi lengkap termasuk rincian tentang cara mendapatkan sertifikat CA yang diperbarui.
Daniel Stenberg
1
@daniel: intinya pesan errornya untuk curl, bukan rvm! Anda dapat membaca solusi yang disarankan curl semua yang Anda inginkan, tetapi jika Anda tidak dapat mengubah permintaan rvm dari curl, Anda terjebak. Saya sendiri mencoba memperbarui bundel SSL curl (pengaturan CURL_CA_BUNDLE) dan tidak berhasil - sebenarnya ada yang salah dengan sertifikat SSL jarak jauh yang menghosting yaml tarball, bukan hanya bundel CA curl yang kedaluwarsa. Memberi tahu pengguna untuk RTFM baik-baik saja jika membaca keluaran benar - benar memperbaiki masalah, tetapi bukan itu masalahnya di sini. Sekali lagi, lihat jawaban di bawah yang sebenarnya memperbaiki masalah tersebut.
Dan Barowy

Jawaban:

125

Jika ada orang lain yang menemukan ini saat mencoba memperbarui ke 1.9.3 (meskipun versi mungkin tidak masalah), periksa versi rvm yang Anda miliki. Wayne tampaknya telah pindah dari rvm.beginrescueend.com ke rvm.io. Sertifikat keamanan situs lama telah kedaluwarsa, jadi respons curl benar.

Memperbarui rvm dari situs baru memperbaiki masalah ini dan memungkinkan saya untuk melanjutkan.

$ \curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enabled

Perbarui : Seperti yang disebutkan @rodgerdpack, perintah berubah dan saya telah memperbarui yang di atas. Secara umum, lihat https://rvm.io/ untuk yang terbaru.

jwadsack
sumber
1
Saya berharap saya melihat jawaban ini terlebih dahulu. Menginstal 1.9.3 di Mac OS X dengan RVM tidak berfungsi, bahkan dengan solusi yang diusulkan di atas. Memperbarui RVM memang berhasil.
chris_radcliff
Ini juga yang berhasil untuk saya (meningkatkan dari 1.9.2 menjadi 1.9.3) terima kasih @jwadsack
Anna Billstrom
hari-hari ini menjalankan perintah yang Anda sebutkan memberikan pesan yang mengatakan "Anda menjalankan paket ubuntu lama dan rusak, lihat stackoverflow.com/questions/9056008/… untuk cara memperbaikinya"
rogerdpack
40

Jika tidak ingin mengubah skrip DAN Anda tidak ingin menambahkan sertifikat "selamanya" ke bundel sertifikat. Ada solusi yang sangat bagus dan cepat:

#to download the cert
wget http://curl.haxx.se/ca/cacert.pem
#to let curl use it for the next calls
export CURL_CA_BUNDLE=~/cacert.pem

Kemudian jalankan skrip Anda. Untuk menyetel ulang variabel lingkungan (untuk panggilan skrip berikutnya yang tidak boleh menggunakan sertifikat ini), masuk kembali ke sistem Anda atau hapus setelan variabel lingkungan:

export CURL_CA_BUNDLE=
DanielaWaranie
sumber
Ini memperbaiki masalah dengan yaml, tetapi saya memiliki masalah terpisah dengan beberapa bagian lain dari komplikasi.
Emerson
4
Sekarang saya bisa mendapatkan rvm untuk diinstal di CentOS. Terima kasih banyak
channa ly
Tidak melakukan apa pun di OSX Lion w / rvm 1.8.3.
Mark Richman
Bekerja dengan baik di Centos5.4. Terima kasih.
Yejun Su
Bekerja seperti pesona di OSX Mountain Lion untuk mendapatkan ruby ​​2.0.0.
Arkan
21

Curl dipanggil dalam .rvm / scripts / fetch, yang secara default akan ada di direktori home Anda.

Edit ini menggunakan editor teks favorit Anda: misalnya,

 nano ~/.rvm/scripts/fetch

Pada baris 56 dan 58 (mungkin berbeda dengan versi RVM lainnya, tentunya) Anda akan melihat dua baris yang dimulai

 fetch_command="curl ...

Cukup tambahkan -k setelah curl, simpan dan coba lagi.

Richard Fairhurst
sumber
9
Itu tidak berhasil untuk saya, tetapi saya mengikuti ide Anda dan menemukan alternatif ini: Buat file ".curlrc" di folder rumah Anda ('~ / .curlrc'). Buka di editor mana saja dan ketik "tidak aman" ke dalam file. Simpan file dan berharap yang terbaik.
Julian Weimer
8
RVM tidak akan pernah menyertakan perubahan itu, kami tidak menyarankan melakukannya dengan cara ini, jika Anda perlu menggunakan tidak aman (-k) panggil saja echo insecure >> ~/.curlrcatau bahkan lebih baik cukup perbarui sertifikat sesuai instruksi
@dbikard
bekerja pada pemerasan debian. Bahkan posting yang lebih lama dapat menghemat banyak waktu;) thx!
23tux
@mpapis Saya sangat setuju, tetapi kesalahan menjelaskan misalnya solusi pengguna620965 dalam kesalahan pemasangan RVM akan sangat bagus
Houen
3
Ini kemungkinan besar karena perubahan URL ke rvm.io yang disebutkan dalam posting di bawah ini dan merupakan cara yang benar untuk mengatasinya. Anda tidak perlu mengabaikan sertifikat SSL atau perilaku curl. Cukup perbarui rvm dari URL yang tepat dengan menerbitkan $ curl -L get.rvm.io | bash -s stable seperti yang ditunjukkan di bawah ini
cclark
20

Anda perlu mengunduh sertifikat ca dari http://curl.haxx.se/ca/cacert.pem dan menambahkannya ke file curl-ca-bundle-new.crt Anda.

Untuk menemukan lokasi file ini gunakan:

   $ curl-config --ca

   /usr/share/curl/curl-ca-bundle.crt

Cadangkan file curl-ca-bundle.crt Anda:

$ cp /usr/share/curl/curl-ca-bundle.crt /usr/share/curl/curl-ca-bundle.crt.old

Kemudian Anda ingin menggabungkan kedua file tersebut menggunakan:

$ cat cacert.pem /usr/share/curl/curl-ca-bundle.crt >> curl-ca-bundle-new.crt
dbikard.dll
sumber
Terima kasih, Anda menghemat waktu saya!
Tadas T
Ini (akan) menyelamatkan saya JAM di OpenIndiana 151. Jika saya dapat memberi suara positif lebih dari sekali, saya akan melakukannya.
Andrew Burns
Ini bekerja untuk saya di CentOS 5.8; Cert ada di / etc / pki / certs / bagi mereka yang perlu menemukannya di CentOS!
geedew
Dan apa yang Anda lakukan dengan hasil curl-ca-bundle-new.crt?
Valerio Schiavoni
File sertifikat baru harus ada di direktori yang ditemukan menggunakan 'curl-config --ca'.
Anirudh
17

Mungkin semua solusi rumit ini dulunya diperlukan, tetapi sekarang yang perlu Anda lakukan hanyalah memutakhirkan RVM terlebih dahulu dan masalah Anda akan terpecahkan:

$ rvm get stable
$ rvm reload
$ rvm install ruby-1.9.3-p194
Nick Messick
sumber
2
Sayangnya, jika versi RVM Anda sudah cukup tua, "rvm get head" bahkan tidak berfungsi. Jawaban @ jwadsack menjelaskan alasannya.
Alex D
ya itu benar. Juga, melihat kembali jawaban saya, "rvm get head" juga bukan nasihat terbaik. Ini benar-benar harus "rvm menjadi stabil". Saya akan mengedit jawaban saya untuk mencerminkan ini.
Nick Messick
14

Jika Anda tidak keberatan menonaktifkan pemeriksaan sertifikat di curl (Saya tidak):

echo insecure > ~/.curlrc
Vojto
sumber
11

Pada Centos 5.6 (Final) saya mengalami masalah dengan menginstal rvm 1.9.2 Kesalahannya adalah:

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
ERROR: There was an error, please check /usr/local/rvm/log/ruby-1.9.2-p290/*.log. Next we'll try to fetch via http.
Trying http:// URL instead.

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
ERROR: There was an error, please check /usr/local/rvm/log/ruby-1.9.2-p290/*.log
ERROR: There has been an error while trying to fetch the source.  
Halting the installation.
ERROR: There has been an error fetching the ruby interpreter. Halting the installation.

Berikut adalah daftar tindakan yang membantu saya memecahkan masalah

$ curl-config --ca # show path to the certificate
/usr/local/share/curl/curl-ca-bundle.crt
$ cd /usr/local/share/curl/ # go to that path
$ cp curl-ca-bundle.crt curl-ca-bundle.crt.bak # backup certificate
$ curl http://curl.haxx.se/ca/cacert.pem -o curl-ca-bundle.crt # download new
$ rvm install 1.9.2 # bingo it works

Versi Btw curl adalah curl 7.18.0 (untuk memeriksa '$ curl -V')

Serge Seletskyy
sumber
1
Solusi yang bagus, dalam kasus saya, saya mengalami kesalahan ini saat menjalankan "rvm get head". Dan hati-hati di linux dengan nama file curl-ca-bundle.crt! berbeda
Albert Català
3

Saya mencoba menginstal ruby-1.9.2-p290dan menemukan masalah yang sama. Setelah menjalankan which curldan menyadari bahwa instance curl berasal dari instalasi MAMP di sistem saya (OS X Snow Leopard), saya mengkonfigurasi ulang PATHvariabel saya untuk menggunakan default sistem di /usr/bin/curl. Dengan menggunakan versi ini curl 7.19.7, saya tidak mengalami masalah dalam menginstal Ruby versi terbaru dengan RVM.

jerikl
sumber
2

Saya mengalami masalah saat menginstal 1.9.2 menggunakan RVM, berikut solusi saya:

Saya masih mendapatkan file tidak ditemukan kesalahan tetapi penginstalan terus berhasil

[2011-07-05 14:24:07] tar zxf /Users//.rvm/archives/yaml-0.1.3.tar.gz -C /Users//.rvm/src --tidak-sama-pemilik (anak): /Users//.rvm/archives/yaml-0.1.3.tar.gz: Tidak dapat membuka: Tidak ada file atau direktori tar (anak): Kesalahan tidak dapat dipulihkan: keluar sekarang tar: Anak mengembalikan status 2 tar : Kesalahan keluar tertunda dari kesalahan sebelumnya

dorothy Dorothy
sumber
1
Saya melakukan hal serupa dan berhasil dengan baik:wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz; cp yaml-0.1.4.tar.gz /Users/yourname/.rvm/archives; rvm install default
Wei
Hanya solusi ini yang berhasil untuk saya di Mac Osx Lion. Terima kasih banyak!
Christian Treppo
1

Terima kasih Dorothy - resep ini berhasil untuk saya dengan modifikasi kecil berikut untuk lingkungan Win7:

Untuk orang lain dengan masalah ini -

  1. Menghargai diskusi tentang memperbarui CA_Bundle - Bagus untuk dilakukan tetapi tidak membantu dengan masalah ini - sertifikat situs web pyyaml ​​masih akan menyebabkan CURL melakukan kesalahan dan karena CURL diluncurkan dalam penginstal, tidak ada cara untuk menambahkan opsi -k .

  2. Ruby 1.9.2-p290 mencoba menginstal YAML 0.1.4 sehingga Google untuk mirror dan mendownload versi itu - YAML-0.1.3 tidak akan berpengaruh dalam melewati masalah.

  3. Anda perlu melakukan windows yang setara dengan CHMOD 777 - di dalam folder rvm / src ke file yang diekstrak. Ubah keamanan sehingga setiap orang memiliki kepemilikan / semua hak istimewa dan matikan atribut hanya-baca untuk semua file dan folder.

Penginstal masih akan menampilkan kesalahan saat mencoba mengunduh (kesalahan CURL), tetapi akan melanjutkan dengan mencoba mengekstrak. Ekstraksi akan menampilkan kesalahan karena tarball sudah diekstraksi ke folder src. Langkah selanjutnya dalam mengonfigurasi YAML harus bekerja tanpa kesalahan jika izin di langkah 3 disetel dengan benar dan penginstalan akan selesai tanpa masalah lebih lanjut. (Jika menginstal melalui cygwin / bash, Anda perlu menambahkan kompiler C seperti 'gcc' dan menambahkan 'ncurses' (perintah tput) dan 'make' ke opsi pengaturan inti cygwin default.)

Duke3D
sumber
0
$ sudo apt-get install curl

$ curl -L https://get.rvm.io | bash -s stable --ruby   with ruby

$ curl -L https://get.rvm.io | bash -s stable --rails   with rails
Uladz Kha
sumber