Lỗi chứng chỉ Curl khi sử dụng RVM để cài đặt Ruby 1.9.2


90

RVM đang gặp lỗi chứng chỉ khi cố tải xuống Ruby 1.9.2. Có vẻ như curlđang gặp vấn đề với chứng chỉ nhưng tôi không chắc chắn cách vượt qua nó. Tôi đã bao gồm thông tin lỗi chính xác bên dưới.

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

Làm cách nào để giải quyết hoặc tránh lỗi này?


bạn đã cài đặt tất cả các phụ thuộc trước đó để biên dịch phiên bản Ruby đó chưa?
eveevans

Toàn bộ vấn đề và giải pháp được đề xuất được nêu trong thông báo lỗi rất dài. Tôi không nghĩ rằng việc lặp lại văn bản đó trong một câu trả lời ở đây sẽ giúp ích rất nhiều. Bắt đầu bằng cách đọc các URL được đề cập.
Daniel Stenberg

2
@daniel Ngoại trừ cách thông thường để khiến curl ngừng phàn nàn về chứng chỉ SSL kém, -k, không thể được sử dụng ở đây, vì curl đang được điều khiển bởi rvm. BTW, bạn nên suy nghĩ cẩn thận về việc bạn có thực sự muốn cho phép curl bỏ qua chứng chỉ SSL xấu hay không. Một điều bạn có thể thử là cung cấp cho curl một gói CA mới hơn . Câu trả lời của @ dorothy dưới đây sẽ hoạt động.
Dan Barowy

@dan: nên đọc lại thông báo lỗi. Nó không đặc biệt đề nghị bạn bỏ qua các chứng chỉ xấu (tôi đã viết thông báo lỗi đó), nó giải thích rõ ràng những gì bạn có thể làm và nó cung cấp một URL với mô tả đầy đủ bao gồm chi tiết về cách nhận chứng chỉ CA được cập nhật.
Daniel Stenberg,

1
@daniel: vấn đề là thông báo lỗi dành cho curl, không phải rvm! Bạn có thể đọc giải pháp được đề xuất của curl tất cả những gì bạn muốn, nhưng nếu bạn không thể sửa đổi lệnh gọi curl của rvm, thì bạn đang mắc kẹt. Bản thân tôi đã thử cập nhật gói SSL của curl (đặt CURL_CA_BUNDLE) và nó không hoạt động - thực sự có điều gì đó sai với chứng chỉ SSL từ xa lưu trữ tarball yaml, không chỉ là gói CA curl đã lỗi thời. Kể một người sử dụng để RTFM là tốt nếu đọc đầu ra thực sự không giải quyết vấn đề, nhưng điều đó là không trường hợp ở đây. Một lần nữa, hãy xem câu trả lời bên dưới thực sự khắc phục được sự cố.
Dan Barowy

Câu trả lời:


125

Trong trường hợp bất kỳ ai khác gặp phải điều này trong khi cố gắng cập nhật lên 1.9.3 (mặc dù phiên bản có thể không quan trọng), hãy kiểm tra phiên bản rvm mà bạn có. Wayne dường như đã chuyển từ rvm.beginrescueend.com sang rvm.io. Chứng chỉ bảo mật của trang web cũ đã hết hạn, vì vậy phản hồi của curl là chính xác.

Cập nhật rvm từ trang web mới đã khắc phục sự cố này và cho phép tôi tiếp tục.

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

Cập nhật : Như @rodgerdpack đã đề cập, lệnh thay đổi và tôi đã cập nhật ở trên. Nói chung, hãy xem https://rvm.io/ để biết thông tin mới nhất.


1
Tôi ước tôi đã nhìn thấy câu trả lời này đầu tiên. Cài đặt 1.9.3 trên Mac OS X với RVM không hoạt động, ngay cả với các giải pháp được đề xuất ở trên. Tuy nhiên, cập nhật RVM đã thực hiện được một mẹo nhỏ.
chris_radcliff

Đây là những gì đã làm nó cho tôi quá (nâng cấp từ 1.9.2 đến 1.9.3) nhờ @jwadsack
Anna Billstrom

những ngày này cách chạy lệnh bạn đề cập đến đưa ra một thông báo nói rằng "bạn đang chạy một gói ubuntu cũ và bị hỏng, thấy stackoverflow.com/questions/9056008/... cho làm thế nào để sửa chữa nó"
rogerdpack

40

Nếu không muốn thay đổi tập lệnh VÀ bạn không muốn thêm chứng chỉ "mãi mãi" vào gói chứng chỉ. Có một giải pháp rất hay và nhanh chóng:

#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

Sau đó chạy tập lệnh của bạn. Để đặt lại biến môi trường (đối với các lệnh gọi tập lệnh tiếp theo không sử dụng chứng chỉ này), hãy đăng nhập lại vào hệ thống của bạn hoặc bỏ đặt biến môi trường:

export CURL_CA_BUNDLE=

Điều này đã khắc phục sự cố với yaml, nhưng tôi có các vấn đề riêng biệt với một số phần khác của sự phức tạp.
Emerson

4
Bây giờ tôi có thể tải rvm để cài đặt trên CentOS. Cảm ơn bạn rất nhiều
channa ly

Không có gì trên OSX Lion w / rvm 1.8.3.
Mark Richman

Hoạt động tốt trên Centos5.4. Cảm ơn bạn.
Yejun Su

Hoạt động giống như một sự quyến rũ trên OSX Mountain Lion để có được ruby ​​2.0.0.
Arkan

21

Curl được gọi trong .rvm / scripts / fetch, theo mặc định sẽ nằm trong thư mục chính của bạn.

Chỉnh sửa điều này bằng trình soạn thảo văn bản yêu thích của bạn: ví dụ:

 nano ~/.rvm/scripts/fetch

Trong dòng 56 và 58 (tất nhiên có thể thay đổi với các phiên bản khác của RVM), bạn sẽ thấy hai dòng bắt đầu

 fetch_command="curl ...

Chỉ cần thêm -k sau khi cuộn tóc, lưu và thử lại.


9
Nó không hiệu quả với tôi, nhưng tôi đã làm theo ý tưởng của bạn và tìm ra giải pháp thay thế này: Tạo tệp ".curlrc" trong thư mục chính của bạn ('~ / .curlrc'). Mở nó trong bất kỳ trình chỉnh sửa nào và nhập "không an toàn" vào tệp. Lưu tệp và hy vọng điều tốt nhất.
Julian Weimer

8
RVM sẽ không bao giờ bao gồm sự thay đổi đó, chúng tôi không khuyến khích làm nó theo cách này, nếu bạn cần phải sử dụng không an toàn (-k) chỉ cần gọi echo insecure >> ~/.curlrchoặc thậm chí chỉ cần tốt hơn giấy chứng nhận cập nhật theo hướng dẫn @dbikard
mpapis

làm việc trên debian bóp. Ngay cả những bài viết cũ hơn cũng có thể tiết kiệm rất nhiều thời gian;) thx!
23tux

@mpapis Tôi hoàn toàn đồng ý, nhưng một lỗi giải thích ví dụ user620965 's giải pháp trong RVM cài đặt lỗi sẽ là tuyệt vời
Houen

3
Điều này rất có thể là do URL thay đổi thành rvm.io được đề cập trong bài đăng bên dưới và là cách chính xác để giải quyết vấn đề này. Bạn không cần phải bỏ qua chứng chỉ SSL hoặc hành vi cong. Chỉ cần cập nhật rvm từ URL thích hợp bằng cách phát hành $ curl -L get.rvm.io | bash -s ổn định như hình dưới đây
cclark

20

Bạn cần tải xuống chứng chỉ ca từ http://curl.haxx.se/ca/cacert.pem và thêm chúng vào tệp curl-ca-pack-new.crt của mình.

Để tìm vị trí của tệp này, hãy sử dụng:

   $ curl-config --ca

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

Sao lưu tệp curl-ca-pack.crt của bạn:

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

Sau đó, bạn muốn nối hai tệp bằng cách sử dụng:

$ cat cacert.pem /usr/share/curl/curl-ca-bundle.crt >> curl-ca-bundle-new.crt

Cảm ơn, bạn đã tiết kiệm thời gian cho tôi!
Tadas T,

Điều này (lẽ ra) đã giúp tôi tiết kiệm HOURS trên OpenIndiana 151. Nếu tôi có thể ủng hộ nhiều hơn một lần.
Andrew Burns

Điều này đã làm việc cho tôi trên CentOS 5.8; Chứng chỉ được đặt trong / etc / pki / certs / cho những người cần tìm nó trên CentOS!
geedew

Và bạn sẽ làm gì với kết quả curl-ca-pack-new.crt?
Valerio Schiavoni

Tệp chứng chỉ mới phải có trong thư mục được tìm thấy bằng cách sử dụng 'curl-config --ca'.
Anirudh

17

Có lẽ tất cả các giải pháp phức tạp này đã từng là cần thiết, nhưng bây giờ tất cả những gì bạn cần làm là nâng cấp RVM trước tiên và vấn đề của bạn sẽ được giải quyết:

$ rvm get stable
$ rvm reload
$ rvm install ruby-1.9.3-p194

2
Thật không may, nếu phiên bản RVM của bạn đủ cũ, thì "rvm get head" thậm chí không hoạt động. Câu trả lời của @ jwadsack giải thích tại sao.
Alex D

vâng, đó là sự thật. Ngoài ra, nhìn lại câu trả lời của tôi, "rvm get head" cũng không phải là lời khuyên tốt nhất. Nó thực sự nên được "rvm nhận được ổn định". Tôi sẽ chỉnh sửa câu trả lời của mình để phản ánh điều này.
Nick Messick,

14

Nếu bạn không phiền khi tắt tính năng kiểm tra chứng chỉ trong curl (tôi không):

echo insecure > ~/.curlrc

11

Trên Centos 5.6 (Final), tôi gặp sự cố khi cài đặt rvm 1.9.2. Lỗi là:

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.

Đây là danh sách các hành động đã giúp tôi giải quyết vấn đề

$ 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

Phiên bản Btw curl là curl 7.18.0 (để kiểm tra '$ curl -V')


1
Giải pháp tốt, trong trường hợp của tôi, tôi đã gặp lỗi này khi thực hiện "rvm get head". Và hãy cẩn thận trong linux với tên của tệp curl-ca-pack.crt! thì khác
Albert Català 12/1213

3

Tôi đã cố gắng cài đặt ruby-1.9.2-p290và gặp phải vấn đề tương tự. Sau khi chạy which curlvà nhận ra rằng phiên bản curl đến từ cài đặt MAMP trên hệ thống của tôi (OS X Snow Leopard), tôi đã cấu hình lại PATHbiến của mình để sử dụng mặc định của hệ thống tại /usr/bin/curl. Sử dụng phiên bản này curl 7.19.7, tôi không gặp vấn đề gì khi cài đặt phiên bản mới nhất của Ruby với RVM.


2

Tôi đã gặp sự cố khi cài đặt 1.9.2 bằng RVM, đây là giải pháp của tôi:

Tôi vẫn gặp lỗi không tìm thấy tệp nhưng quá trình cài đặt tiếp tục thành công

[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 (con): /Users//.rvm/archives/yaml-0.1.3.tar.gz: Không thể mở: Không có tệp hoặc thư mục nào như vậy tar (con): Lỗi không thể khôi phục: thoát ngay tar: Con trả về trạng thái tar 2 : Lỗi thoát bị trì hoãn từ các lỗi trước đó


1
Tôi đã làm một cái gì đó tương tự và làm việc rất tốt: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

Chỉ có giải pháp này phù hợp với tôi trên Mac Osx Lion. Cảm ơn rất nhiều!
Christian Treppo

1

Cảm ơn Dorothy - công thức này phù hợp với tôi với những sửa đổi nhỏ sau đây cho môi trường Win7:

Đối với những người khác có vấn đề này -

  1. Đánh giá cao cuộc thảo luận về việc cập nhật CA_Bundle - Việc tốt nên làm nhưng nó không giúp được gì cho vấn đề này - chứng chỉ trang web pyyaml ​​sẽ vẫn khiến CURL gặp lỗi và vì CURL được khởi chạy trong trình cài đặt, không có cách nào để thêm tùy chọn -k .

  2. Ruby 1.9.2-p290 đang cố gắng cài đặt YAML 0.1.4 để Google tìm kiếm bản sao và tải xuống phiên bản đó - YAML-0.1.3 sẽ không có tác dụng trong việc bỏ qua các vấn đề.

  3. Bạn cần thực hiện các cửa sổ tương đương với CHMOD 777 - trong thư mục rvm / src cho các tệp được giải nén. Thay đổi bảo mật để mọi người đều có quyền sở hữu / tất cả các đặc quyền và tắt thuộc tính chỉ đọc cho tất cả các tệp và thư mục.

Trình cài đặt sẽ vẫn gặp lỗi khi cố gắng tải xuống (lỗi CURL), nhưng sẽ tiếp tục bằng cách cố gắng giải nén. Việc trích xuất sẽ gây ra lỗi vì tarball đã được giải nén vào thư mục src. Bước tiếp theo của việc định cấu hình YAML sẽ hoạt động mà không có lỗi nếu các quyền trong bước 3 được đặt chính xác và quá trình cài đặt sẽ hoàn tất mà không có vấn đề gì thêm. (Nếu cài đặt qua cygwin / bash, bạn sẽ cần thêm trình biên dịch C như 'gcc' và thêm 'ncurses' (lệnh tput) và 'make' vào các tùy chọn thiết lập cygwin cốt lõi mặc định.)


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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.