Curl-Zertifikatfehler bei Verwendung von RVM zur Installation von Ruby 1.9.2

90

Beim Versuch, Ruby 1.9.2 herunterzuladen, tritt bei RVM ein Zertifikatfehler auf. Es sieht so aus, curlals hätte ich ein Zertifikatproblem, aber ich bin mir nicht sicher, wie ich es umgehen soll. Ich habe die genauen Fehlerinformationen unten angegeben.

$ 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.

Wie kann ich diesen Fehler beheben oder vermeiden?

Will Dennis
quelle
Haben Sie alle vorherigen Abhängigkeiten installiert, um diese Ruby-Version zu kompilieren?
Evaevans
Das gesamte Problem und die vorgeschlagene Lösung sind in der sehr langen Fehlermeldung angegeben. Ich denke nicht, dass es viel helfen wird, diesen Text in einer Antwort hier zu wiederholen. Lesen Sie zunächst die genannten URLs nach.
Daniel Stenberg
2
@daniel Abgesehen davon, dass der normale Weg, Curl nicht mehr über ein schlechtes SSL-Zertifikat beschweren zu lassen, -k, hier nicht verwendet werden kann, da Curl von rvm gesteuert wird. Übrigens sollten Sie sorgfältig überlegen, ob Sie Curl wirklich erlauben möchten, schlechte SSL-Zertifikate zu ignorieren. Eine Sache, die Sie versuchen können, ist, Curl ein neueres CA-Bundle zu geben . @ Dorothys Antwort unten sollte funktionieren.
Dan Barowy
@dan: also lies die fehlermeldung nochmal. Es bedeutet nicht besonders, dass Sie fehlerhafte Zertifikate ignorieren (ich habe diese Fehlermeldung geschrieben), es erklärt klar, was Sie tun können, und es enthält eine URL mit einer vollständigen Beschreibung, einschließlich Details zum Abrufen aktualisierter CA-Zertifikate.
Daniel Stenberg
1
@ Daniel: Der Punkt ist, dass die Fehlermeldung für Curl ist, nicht für RVM! Sie können die von curl vorgeschlagene Lösung nach Belieben lesen. Wenn Sie jedoch den Aufruf von rvm für curl nicht ändern können, stecken Sie fest. Ich selbst habe versucht, das SSL-Bundle von curl zu aktualisieren (Einstellung CURL_CA_BUNDLE), und es hat nicht funktioniert. Mit dem Remote-SSL-Zertifikat, das den Yaml-Tarball hostet, stimmt tatsächlich etwas nicht, nicht nur mit einem veralteten Curl-CA-Bundle. Um einen Benutzer zu RTFM Telling ist in Ordnung , die Ausgabe wirklich , wenn das Lesen macht das Problem beheben, aber das ist nicht hier der Fall. Siehe auch die Antwort unten, die das Problem tatsächlich behebt.
Dan Barowy

Antworten:

125

Falls jemand anderes beim Versuch, auf 1.9.3 zu aktualisieren (obwohl die Version wahrscheinlich keine Rolle spielt), darauf stößt, überprüfen Sie die Version von rvm, die Sie haben. Wayne scheint von rvm.beginrescueend.com zu rvm.io gewechselt zu sein. Das Sicherheitszertifikat der alten Site ist abgelaufen, sodass die Antwort von curl korrekt ist.

Das Aktualisieren von rvm von der neuen Site hat dieses Problem behoben und mir ermöglicht, weiterzumachen.

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

Update : Wie @rodgerdpack erwähnt, ändert sich der Befehl und ich habe das oben genannte aktualisiert. Die neuesten Informationen finden Sie im Allgemeinen unter https://rvm.io/ .

Jwadsack
quelle
1
Ich wünschte, ich hätte diese Antwort zuerst gesehen. Die Installation von 1.9.3 unter Mac OS X mit RVM funktionierte trotz der oben vorgeschlagenen Lösungen nicht. Das Aktualisieren von RVM hat es jedoch geschafft.
chris_radcliff
Dies war es auch für mich (Upgrade von 1.9.2 auf 1.9.3) danke @jwadsack
Anna Billstrom
Wenn Sie heutzutage den von Ihnen erwähnten Befehl ausführen , wird die Meldung angezeigt , dass Sie ein altes und defektes Ubuntu-Paket ausführen. Informationen zur Behebung finden Sie unter
stackoverflow.com/questions/9056008/….
40

Wenn Sie das Skript nicht ändern möchten UND Sie dem Zertifikatspaket kein Zertifikat "für immer" hinzufügen möchten. Es gibt eine sehr schöne und schnelle Lösung:

#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

Führen Sie dann Ihr Skript aus. Um die Umgebungsvariable zurückzusetzen (für nachfolgende Skriptaufrufe, die dieses Zertifikat nicht verwenden sollten), melden Sie sich erneut bei Ihrem System an oder deaktivieren Sie die Umgebungsvariable:

export CURL_CA_BUNDLE=
DanielaWaranie
quelle
Dies hat ein Problem mit Yaml behoben, aber ich habe separate Probleme mit einem anderen Teil der Komplikation.
Emerson
4
Jetzt kann ich rvm unter CentOS installieren lassen. Vielen Dank
channa ly
Tut nichts unter OSX Lion mit rvm 1.8.3.
Mark Richman
Funktioniert gut auf Centos5.4. Danke dir.
Yejun Su
Funktioniert wie ein Zauber auf OSX Mountain Lion, um Ruby 2.0.0 zu erhalten.
Arkan
21

Curl wird in .rvm / scripts / fetch aufgerufen, das sich standardmäßig in Ihrem Home-Verzeichnis befindet.

Bearbeiten Sie dies mit Ihrem bevorzugten Texteditor: Zum Beispiel:

 nano ~/.rvm/scripts/fetch

In den Zeilen 56 und 58 (kann natürlich mit anderen Versionen von RVM variieren) sehen Sie zwei Zeilen, die beginnen

 fetch_command="curl ...

Fügen Sie einfach -k nach dem Einrollen hinzu, speichern Sie es und versuchen Sie es erneut.

Richard Fairhurst
quelle
9
Es hat bei mir nicht funktioniert, aber ich bin Ihrer Idee gefolgt und habe diese Alternative herausgefunden: Erstellen Sie eine ".curlrc" -Datei in Ihrem Home-Ordner ('~ / .curlrc'). Öffnen Sie es in einem beliebigen Editor und geben Sie "unsicher" in die Datei ein. Speichern Sie die Datei und hoffen Sie auf das Beste.
Julian Weimer
8
RVM wird diese Änderung niemals einschließen. Wir raten davon ab, dies auf diese Weise zu tun. Wenn Sie unsicher (-k) verwenden müssen, rufen Sie einfach an echo insecure >> ~/.curlrcoder aktualisieren Sie die Zertifikate besser gemäß den Anweisungen von
@dbikard
arbeitete an Debian Squeeze. Auch ältere Beiträge können viel Zeit sparen;) Danke!
23.
@mpapis Ich stimme voll und ganz zu, aber ein Fehler, der zB die Lösung von user620965 in den RVM-Installationsfehlern erklärt, wäre großartig
Houen
3
Dies ist höchstwahrscheinlich auf die im folgenden Beitrag erwähnte URL-Änderung in rvm.io zurückzuführen und ist der richtige Weg, dies zu beheben. Sie müssen SSL-Zertifikate oder Curl-Verhalten nicht ignorieren. Aktualisieren Sie einfach rvm von der richtigen URL, indem Sie $ curl -L get.rvm.io | ausgeben Bash -s stabil wie unten gezeigt
Clark
20

Sie müssen das ca-Zertifikat von http://curl.haxx.se/ca/cacert.pem herunterladen und zu Ihrer Datei curl-ca-bundle-new.crt hinzufügen.

Um den Speicherort dieser Datei zu ermitteln, verwenden Sie:

   $ curl-config --ca

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

Sichern Sie Ihre Datei curl-ca-bundle.crt:

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

Dann möchten Sie die beiden Dateien verketten mit:

$ cat cacert.pem /usr/share/curl/curl-ca-bundle.crt >> curl-ca-bundle-new.crt
dbikard
quelle
Danke, du hast mir etwas Zeit gespart!
Tadas T
Dies hätte mir STUNDEN bei OpenIndiana 151 erspart. Wenn ich mehr als einmal abstimmen könnte, würde ich.
Andrew Burns
Dies funktionierte für mich unter CentOS 5.8; Zertifikate befinden sich in / etc / pki / certs / für diejenigen, die es auf CentOS finden müssen!
Geedew
Und was machen Sie mit dem resultierenden curl-ca-bundle-new.crt?
Valerio Schiavoni
Die neue Zertifikatdatei sollte in dem Verzeichnis vorhanden sein, das mit 'curl-config --ca' gefunden wurde.
Anirudh
17

Vielleicht waren all diese komplizierten Lösungen einmal notwendig, aber jetzt müssen Sie nur noch RVM aktualisieren und Ihr Problem wird gelöst:

$ rvm get stable
$ rvm reload
$ rvm install ruby-1.9.3-p194
Nick Messick
quelle
2
Wenn Ihre RVM-Version alt genug ist, funktioniert "rvm get head" leider nicht einmal. @ jwadsacks Antwort erklärt warum.
Alex D
ja, das ist wahr. Wenn ich auf meine Antwort zurückblicke, ist "rvm get head" auch nicht der beste Rat. Es sollte wirklich "rvm get stabil" sein. Ich werde meine Antwort bearbeiten, um dies widerzuspiegeln.
Nick Messick
14

Wenn es Ihnen nichts ausmacht, das Zertifikat zu deaktivieren, überprüfen Sie Curl (ich nicht):

echo insecure > ~/.curlrc
Vojto
quelle
11

Unter Centos 5.6 (Final) hatte ich ein Problem mit der Installation von rvm 1.9.2. Der Fehler war:

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.

Hier ist eine Liste von Aktionen, die mir geholfen haben, das Problem zu lösen

$ 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

Btw Curl-Version ist Curl 7.18.0 (um '$ curl -V' zu überprüfen)

Serge Seletskyy
quelle
1
Gute Lösung, in meinem Fall hatte ich diesen Fehler beim Ausführen von "rvm get head". Und seien Sie unter Linux vorsichtig mit dem Namen der Datei curl-ca-bundle.crt! ist anders
Albert Català
3

Ich habe versucht zu installieren ruby-1.9.2-p290und bin auf das gleiche Problem gestoßen. Nachdem which curlich ausgeführt und festgestellt hatte, dass die Curl-Instanz von einer Installation von MAMP auf meinem System (OS X Snow Leopard) stammt, konfigurierte ich meine PATHVariable neu, um den Systemstandard bei zu verwenden /usr/bin/curl. Mit dieser Version hatte curl 7.19.7ich kein Problem damit, die neueste Version von Ruby mit RVM zu installieren.

jerikl
quelle
2

Ich hatte Probleme bei der Installation von 1.9.2 mit RVM. Hier ist meine Lösung:

Ich habe immer noch den Fehler "Datei nicht gefunden" erhalten, aber die Installation war weiterhin erfolgreich

[2011-07-05 14:24:07] tar zxf /Users//.rvm/archives/yaml-0.1.3.tar.gz -C /Users//.rvm/src - no-same-owner tar (Kind): /Users//.rvm/archives/yaml-0.1.3.tar.gz: Kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis tar (Kind): Fehler kann nicht behoben werden: Beenden jetzt tar: Kind hat Status 2 tar zurückgegeben : Fehlerbehebung aufgrund früherer Fehler verzögert

Dorothy Dorothy
quelle
1
Ich habe etwas Ähnliches gemacht und ganz gut geklappt: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
Nur diese Lösung funktionierte für mich auf Mac Osx Lion. Vielen Dank!
Christian Treppo
1

Vielen Dank, Dorothy. Dieses Rezept hat bei mir mit den folgenden geringfügigen Änderungen für eine Win7-Umgebung funktioniert:

Für andere mit diesem Problem -

  1. Schätzen Sie die Diskussion über das Aktualisieren des CA_Bundle - Gut zu tun, aber es hat bei diesem Problem nicht geholfen - das pyyaml-Website-Zertifikat führt weiterhin dazu, dass CURL einen Fehler auslöst, und da CURL im Installationsprogramm gestartet wird, kann keine Option -k hinzugefügt werden .

  2. Ruby 1.9.2-p290 versucht, YAML 0.1.4 zu installieren, damit Google einen Spiegel erhält und diese Version herunterlädt. YAML-0.1.3 hat keine Auswirkungen auf die Umgehung der Probleme.

  3. Sie müssen das Windows-Äquivalent von CHMOD 777 ausführen - im Ordner rvm / src zu den extrahierten Dateien. Ändern Sie die Sicherheit so, dass jeder Eigentümer / alle Berechtigungen hat, und deaktivieren Sie das schreibgeschützte Attribut für alle Dateien und Ordner.

Das Installationsprogramm gibt weiterhin Fehler aus, wenn es versucht, es herunterzuladen (CURL-Fehler), setzt es jedoch fort, indem es versucht, es zu extrahieren. Die Extraktion löst Fehler aus, da der Tarball bereits in den Ordner src extrahiert wurde. Der nächste Schritt zum Konfigurieren von YAML sollte fehlerfrei funktionieren, wenn die Berechtigungen in Schritt 3 korrekt festgelegt wurden und die Installation ohne weitere Probleme abgeschlossen werden sollte. (Bei der Installation über cygwin / bash müssen Sie einen C-Compiler wie 'gcc' hinzufügen und 'ncurses' (Befehl tput) und 'make' zu den Standard-Cygwin-Setup-Optionen hinzufügen.)

Duke3D
quelle
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
quelle