Ошибка сертификата Curl при использовании RVM для установки Ruby 1.9.2 - PullRequest
90 голосов
/ 20 июня 2011

RVM сталкивается с ошибкой сертификата при попытке загрузить Ruby 1.9.2.Похоже, что curl имеет проблему с сертификатом, но я не уверен, как обойти это.Я включил точную информацию об ошибке ниже.

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

Как я могу устранить или избежать эту ошибку?

Ответы [ 11 ]

125 голосов
/ 10 апреля 2012

Если кто-то еще столкнется с этим при попытке обновить до 1.9.3 (хотя версия, вероятно, не имеет значения), проверьте версию rvm, которая у вас есть. Уэйн, похоже, перешел с rvm.beginrescueend.com на rvm.io. Срок действия старого сертификата безопасности сайта истек, поэтому ответ curl правильный.

Обновление rvm с нового сайта устранило эту проблему и позволило мне двигаться вперед.

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

Обновление : Как уже упоминалось @rodgerdpack, команда меняется, и я обновил выше. В общем, см. https://rvm.io/ для последней.

40 голосов
/ 26 октября 2011

Если не хочет изменять скрипт И вы не хотите добавлять сертификат "навсегда" в комплект сертификатов. Есть очень хорошее и быстрое решение:

#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

Тогда запустите свой скрипт. Чтобы сбросить переменную среды (для последующих вызовов сценариев, которые не должны использовать этот сертификат), повторно войдите в систему или удалите переменную среды:

export CURL_CA_BUNDLE=
21 голосов
/ 02 августа 2011

Curl вызывается в .rvm / scripts / fetch, который по умолчанию будет находиться в вашем домашнем каталоге.

Отредактируйте его, используя ваш любимый текстовый редактор: например,

 nano ~/.rvm/scripts/fetch

В строках 56 и 58 (конечно, могут отличаться от других версий RVM) вы увидите две строки, которые начинаются

 fetch_command="curl ...

Просто добавьте -k после curl, сохраните и попробуйте снова.

20 голосов
/ 25 июля 2011

Вам необходимо скачать сертификат CA из http://curl.haxx.se/ca/cacert.pem и добавить его в свой файл curl-ca-bundle-new.crt.

Чтобы найти расположение этого файла, используйте:

   $ curl-config --ca

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

Сделайте резервную копию вашего файла curl-ca-bundle.crt:

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

Затем вы хотите объединить два файла, используя:

$ cat cacert.pem /usr/share/curl/curl-ca-bundle.crt >> curl-ca-bundle-new.crt
17 голосов
/ 04 мая 2012

Возможно, все эти сложные решения когда-то были необходимы, но теперь все, что вам нужно сделать, это сначала обновить RVM, и ваша проблема будет решена:

$ rvm get stable
$ rvm reload
$ rvm install ruby-1.9.3-p194
14 голосов
/ 02 августа 2012

Если вы не против отключить проверку сертификатов в curl (не знаю):

echo insecure > ~/.curlrc
11 голосов
/ 29 сентября 2011

На Centos 5.6 (Финал) У меня была проблема с установкой rvm 1.9.2 Ошибка была:

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.

Вот список действий, которые помогли мне решить проблему

$ 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

Кстати, версия curl - curl 7.18.0 (для проверки $ curl -V)

3 голосов
/ 27 сентября 2011

Я пытался установить ruby-1.9.2-p290 и столкнулся с той же проблемой.После запуска which curl и понимания того, что экземпляр curl исходил от установки MAMP в моей системе (OS X Snow Leopard), я перенастроил свою переменную PATH, чтобы использовать системное значение по умолчанию /usr/bin/curl.Используя эту версию, curl 7.19.7, у меня не было проблем с установкой последней версии Ruby с RVM.

2 голосов
/ 05 июля 2011

У меня были проблемы с установкой 1.9.2 с использованием RVM, вот мое решение:

Я все еще получил сообщение об ошибке "файл не найден", но установка прошла успешно

[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 (дочерний): /Users//.rvm/archives/yaml-0.1.3.tar.gz: невозможно открыть: такого файла или каталога нет tar (дочерний): ошибка не может быть исправлена: выход сейчас tar: ребенок вернул статус 2 tar: Ошибка выхода задержана из-за предыдущих ошибок

1 голос
/ 26 июля 2011

Спасибо, Дороти, этот рецепт сработал для меня со следующими незначительными изменениями для среды Win7:

Для других с этой проблемой -

  1. Благодарим вас за обсуждение обновления CA_Bundle. но это не помогло с этой проблемой - сертификат веб-сайта pyyaml ​​все еще будет заставить CURL выдавать ошибку и поскольку CURL запускается в установщике, нет способа добавить опцию -k.

  2. Ruby 1.9.2-p290 пытается установить YAML 0.1.4, поэтому Google для отразите и загрузите эту версию - YAML-0.1.3 не будет иметь никакого эффекта в в обход вопросов.

  3. Вам нужно сделать Windows, эквивалентную CHMOD 777 - в пределах rvm / src папка с извлеченными файлами. Измените безопасность, чтобы все владение / все привилегии и отключить атрибут «только чтение» для всех файлов и папки.

Программа установки по-прежнему выдает ошибки при попытке загрузки (ошибка CURL), но возобновляет работу при попытке извлечь. Извлечение вызовет ошибки, потому что tarball уже извлечен в папку src. Следующий шаг настройки YAML должен работать без ошибок, если разрешения на шаге 3 были установлены правильно, и установка должна быть завершена без дальнейших проблем. (При установке через cygwin / bash вам потребуется добавить компилятор C, например, «gcc», добавить «ncurses» (команда tput) и «make» в настройки по умолчанию для ядра cygwin.)

...