Curl Certificate Error เมื่อใช้ RVM เพื่อติดตั้ง Ruby 1.9.2


90

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.

ฉันจะแก้ไขหรือหลีกเลี่ยงข้อผิดพลาดนี้ได้อย่างไร


คุณได้ติดตั้งการอ้างอิงก่อนหน้านี้ทั้งหมดเพื่อรวบรวมเวอร์ชัน Ruby นั้นหรือไม่?
eveevans

ปัญหาทั้งหมดและวิธีแก้ไขที่แนะนำระบุไว้ในข้อความแสดงข้อผิดพลาดที่มีความยาวมาก ฉันไม่คิดว่าการทำซ้ำข้อความนั้นในคำตอบที่นี่จะช่วยได้มาก เริ่มต้นด้วยการอ่าน URL ที่กล่าวถึง
Daniel Stenberg

2
@daniel ยกเว้นว่าวิธีปกติในการทำให้ curl หยุดบ่นเกี่ยวกับใบรับรอง SSL ที่ไม่ดีไม่สามารถใช้ที่นี่ได้เนื่องจาก curl ถูกขับเคลื่อนโดย rvm BTW คุณควรพิจารณาอย่างรอบคอบว่าคุณต้องการอนุญาตให้ curl เพิกเฉยต่อใบรับรอง SSL ที่ไม่ดีหรือไม่ สิ่งหนึ่งที่คุณสามารถลองคือเพื่อให้ขดมัด CA ใหม่ คำตอบของ @dorothy ด้านล่างน่าจะใช้ได้
Dan Barowy

@dan: โปรดอ่านข้อความแสดงข้อผิดพลาดอีกครั้ง ไม่ได้แนะนำให้คุณละเว้นใบรับรองที่ไม่ถูกต้องเป็นพิเศษ (ฉันเขียนข้อความแสดงข้อผิดพลาดนั้น) มันอธิบายอย่างชัดเจนว่าคุณสามารถทำอะไรได้บ้างและมี URL พร้อมคำอธิบายแบบเต็มรวมถึงรายละเอียดเกี่ยวกับวิธีรับใบรับรอง CA ที่อัปเดต
Daniel Stenberg

1
@daniel: ประเด็นคือข้อความแสดงข้อผิดพลาดมีไว้สำหรับ curl ไม่ใช่ rvm! คุณสามารถอ่านโซลูชันที่แนะนำของ curl ได้ทั้งหมดที่คุณต้องการ แต่ถ้าคุณไม่สามารถแก้ไขการเรียก curl ของ rvm คุณจะติดขัด ตัวผมเองพยายามอัปเดตกำ SSL ขดของ (การตั้งค่า CURL_CA_BUNDLE) และมันไม่ได้ work-- มีจริงสิ่งผิดปกติกับใบรับรอง SSL ระยะไกลที่เจ้าภาพ yaml tarball ไม่เพียงออกจากวันที่ขด CA กำ การบอกให้ผู้ใช้ทราบถึง RTFM นั้นทำได้ดีหากการอ่านผลลัพธ์สามารถแก้ไขปัญหาได้จริง แต่นั่นไม่ใช่กรณีนี้ อีกครั้งดูคำตอบด้านล่างซึ่งจริงแก้ไขปัญหา
Dan Barowy

คำตอบ:


125

ในกรณีที่มีคนอื่นเจอสิ่งนี้ในขณะที่พยายามอัปเดตเป็น 1.9.3 (แม้ว่าเวอร์ชันอาจไม่สำคัญ) ให้ตรวจสอบเวอร์ชัน rvm ที่คุณมี ดูเหมือนว่า Wayne จะย้ายจาก rvm.beginrescueend.com ไปที่ rvm.io ใบรับรองความปลอดภัยของไซต์เก่าหมดอายุดังนั้นคำตอบของ curl จึงถูกต้อง

การอัปเดต rvm จากไซต์ใหม่ช่วยแก้ไขปัญหานี้และทำให้ฉันก้าวต่อไปได้

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

อัปเดต : ตามที่ @rodgerdpack กล่าวถึงคำสั่งจะเปลี่ยนไปและฉันได้อัปเดตข้างต้นแล้ว โดยทั่วไปโปรดดูhttps://rvm.io/สำหรับข้อมูลล่าสุด


1
ฉันหวังว่าฉันจะเห็นคำตอบนี้ก่อน การติดตั้ง 1.9.3 บน Mac OS X ด้วย RVM ไม่ทำงานแม้ว่าจะมีโซลูชันที่เสนอข้างต้นก็ตาม แม้ว่าการอัปเดต RVM จะเป็นเคล็ดลับ
chris_radcliff

นี่คือสิ่งที่ทำเพื่อฉันเช่นกัน (อัปเกรดจาก 1.9.2 เป็น 1.9.3) ขอบคุณ @jwadsack
Anna Billstrom

วันนี้ที่เรียกใช้คำสั่งที่คุณพูดถึงจะมีข้อความว่า "คุณกำลังใช้งานแพ็คเกจอูบุนตูเก่าและใช้งานไม่ได้ดูที่stackoverflow.com/questions/9056008/…สำหรับวิธีการแก้ไข"
rogerdpack

40

หากไม่ต้องการเปลี่ยนสคริปต์และคุณไม่ต้องการเพิ่มใบรับรอง "ตลอดไป"ในชุดใบรับรอง มีวิธีแก้ปัญหาที่ดีและรวดเร็วมาก:

#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=

สิ่งนี้แก้ไขปัญหาเกี่ยวกับ yaml แต่ฉันมีปัญหาแยกต่างหากกับส่วนอื่น ๆ ของภาวะแทรกซ้อน
Emerson

4
ตอนนี้ฉันสามารถรับ rvm เพื่อติดตั้งบน CentOS ได้แล้ว ขอบคุณมาก
channa ly

ไม่มีอะไรบน OSX Lion w / rvm 1.8.3
Mark Richman

ทำงานได้ดีกับ Centos5.4 ขอขอบคุณ.
Yejun Su

ทำงานได้อย่างมีเสน่ห์บน OSX Mountain Lion เพื่อให้ได้ทับทิม 2.0.0
Arkan

21

Curl ถูกเรียกใช้ใน. rvm / scripts / fetch ซึ่งโดยค่าเริ่มต้นจะอยู่ในโฮมไดเร็กทอรีของคุณ

แก้ไขโดยใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบตัวอย่างเช่น

 nano ~/.rvm/scripts/fetch

ในบรรทัดที่ 56 และ 58 (แน่นอนอาจแตกต่างกันไปตามรุ่นอื่น ๆ ของ RVM) คุณจะเห็นสองบรรทัดซึ่งเริ่มต้น

 fetch_command="curl ...

เพียงแค่เพิ่ม -k หลังจาก curl บันทึกแล้วลองอีกครั้ง


9
มันไม่ได้ผลสำหรับฉัน แต่ฉันทำตามความคิดของคุณและพบทางเลือกนี้: สร้างไฟล์ ".curlrc" ในโฟลเดอร์บ้านของคุณ ('~ / .curlrc') เปิดในโปรแกรมแก้ไขใด ๆ และพิมพ์ "ไม่ปลอดภัย" ลงในไฟล์ บันทึกไฟล์และหวังว่าจะดีที่สุด
Julian Weimer

8
RVM จะไม่รวมการเปลี่ยนแปลงนั้นเราไม่แนะนำให้ทำเช่นนี้หากคุณต้องการใช้ (-k) ที่ไม่ปลอดภัยเพียงแค่โทรecho insecure >> ~/.curlrcหรือดีกว่านั้นเพียงแค่อัปเดตใบรับรองตามคำแนะนำของ
@dbikard

ทำงานเกี่ยวกับการบีบเดเบียน แม้แต่โพสต์ที่เก่ากว่าก็สามารถประหยัดเวลาได้มาก) ขอบคุณ!
23tux

@mpapis ฉันเห็นด้วยอย่างยิ่ง แต่ข้อผิดพลาดในการอธิบายเช่นโซลูชันของ user620965 ในข้อผิดพลาดในการติดตั้ง RVM จะดีมาก
Houen

3
ซึ่งเป็นไปได้มากที่สุดเนื่องจาก URL เปลี่ยนเป็น rvm.io ที่กล่าวถึงในโพสต์ด้านล่างและเป็นวิธีที่ถูกต้องในการแก้ไขปัญหานี้ คุณไม่จำเป็นต้องเพิกเฉยต่อใบรับรอง SSL หรือพฤติกรรมโค้งงอ เพียงอัปเดต rvm จาก URL ที่ถูกต้องโดยการออก $ curl -L get.rvm.io | bash -s เสถียรดังที่แสดงด้านล่าง
cclark

20

คุณต้องดาวน์โหลดใบรับรอง 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

ขอบคุณช่วยฉันไว้สักระยะ!
Tadas T

สิ่งนี้ (น่าจะ) ช่วยฉันได้HOURSใน OpenIndiana 151 ถ้าฉันสามารถโหวตได้มากกว่าหนึ่งครั้งฉันจะทำได้
Andrew Burns

สิ่งนี้ใช้ได้ผลกับฉันบน CentOS 5.8; ใบรับรองอยู่ใน / etc / pki / certs / สำหรับผู้ที่ต้องการค้นหาใน CentOS!
geedew

แล้วคุณจะทำอย่างไรกับผลลัพธ์ curl-ca-bundle-new.crt?
Valerio Schiavoni

ไฟล์ใบรับรองใหม่ควรอยู่ในไดเร็กทอรีที่พบโดยใช้ "curl-config --ca"
Anirudh

17

บางทีวิธีแก้ปัญหาที่ซับซ้อนเหล่านี้อาจจำเป็น แต่ตอนนี้สิ่งที่คุณต้องทำคืออัปเกรด RVM ก่อนแล้วปัญหาของคุณจะได้รับการแก้ไข:

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

2
น่าเสียดายถ้า RVM เวอร์ชันของคุณเก่าพอ "rvm get head" ก็ใช้ไม่ได้ด้วยซ้ำ คำตอบของ @ jwadsack อธิบายว่าทำไม
Alex D

ใช่นั่นเป็นความจริง. นอกจากนี้เมื่อมองย้อนกลับไปที่คำตอบของฉัน "rvm get head" ก็ไม่ใช่คำแนะนำที่ดีที่สุดเช่นกัน จริงๆมันควรจะเป็น "rvm get stable" ฉันจะแก้ไขคำตอบเพื่อสะท้อนสิ่งนี้
Nick Messick

14

หากคุณไม่รังเกียจที่จะปิดการใช้งานการตรวจสอบใบรับรองใน curl (ฉันไม่):

echo insecure > ~/.curlrc

11

ใน 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

เวอร์ชัน Btw curl คือ curl 7.18.0 (เพื่อตรวจสอบ '$ curl -V')


1
ทางออกที่ดีในกรณีของฉันฉันมีข้อผิดพลาดนี้เมื่อเรียกใช้ "rvm get head" และระวังใน linux ด้วยชื่อไฟล์ curl-ca-bundle.crt! แตกต่าง
Albert Català

3

ฉันพยายามติดตั้งruby-1.9.2-p290และพบปัญหาเดียวกัน หลังจากรันwhich curlและทราบว่าอินสแตนซ์ curl มาจากการติดตั้ง MAMP บนระบบของฉัน (OS X Snow Leopard) ฉันกำหนดค่าPATHตัวแปรของฉันใหม่เพื่อใช้ค่าเริ่มต้นของระบบที่/usr/bin/curl. เมื่อใช้เวอร์ชันนี้curl 7.19.7ฉันไม่มีปัญหาในการติดตั้ง Ruby เวอร์ชันล่าสุดกับ RVM


2

ฉันมีปัญหาในการติดตั้ง 1.9.2 โดยใช้ RVM นี่คือวิธีแก้ปัญหาของฉัน:

  • ดาวน์โหลด yaml-0.1.3.tar.gz จากhttp://www.filewatcher.com/m/yaml-0.1.3.tar.gz.466845.0.0.html
  • บันทึกลงใน /Users//.rvm/archives/yaml-0.1.3.tar.gz
  • เรียกใช้คำสั่งเหล่านี้:

    chmod 777 yaml-0.1.3.tar.gz

    tar zxf /Users//.rvm/archives/yaml-0.1.3.tar.gz -C /Users//.rvm/src

ฉันยังคงได้รับไฟล์ไม่พบข้อผิดพลาด แต่การติดตั้งยังคงประสบความสำเร็จ

[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: Child ส่งคืนสถานะ 2 tar : ข้อผิดพลาดออกล่าช้าจากข้อผิดพลาดก่อนหน้านี้


1
ฉันทำสิ่งที่คล้ายกันและได้ผลดี: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

เฉพาะวิธีนี้เท่านั้นที่ใช้ได้กับฉันบน Mac Osx Lion ขอบคุณมาก!
Christian Treppo

1

ขอบคุณโดโรธี - สูตรนี้ใช้ได้ผลสำหรับฉันด้วยการปรับเปลี่ยนเล็กน้อยต่อไปนี้สำหรับสภาพแวดล้อม Win7:

สำหรับคนอื่น ๆ ที่มีปัญหานี้ -

  1. ขอขอบคุณการสนทนาเกี่ยวกับการอัปเดต CA_Bundle - ทำได้ดี แต่ไม่ได้ช่วยในเรื่องนี้ - ใบรับรองเว็บไซต์ pyyaml ​​จะยังคงทำให้ CURL แสดงข้อผิดพลาดและเนื่องจาก CURL ถูกเปิดใช้งานภายในโปรแกรมติดตั้งจึงไม่มีวิธีเพิ่มตัวเลือก a -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)


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.