90 votes

Erreur de certificat Curl lors de l'utilisation de RVM pour installer Ruby 1.9.2

RVM rencontre une erreur de certificat lorsqu'il essaie de télécharger Ruby 1.9.2. Cela ressemble à curl a un problème de certificat mais je ne sais pas comment le contourner. J'ai inclus l'information d'erreur exacte ci-dessous.

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

Comment puis-je résoudre ou éviter cette erreur ?

125voto

jwadsack Points 2073

Au cas où quelqu'un d'autre rencontrerait ce problème en essayant de mettre à jour vers la 1.9.3 (bien que la version n'ait probablement pas d'importance), vérifiez la version de rvm que vous avez. Wayne semble être passé de rvm.beginrescueend.com à rvm.io. Le certificat de sécurité de l'ancien site a expiré, donc la réponse de curl est correcte.

La mise à jour de rvm depuis le nouveau site a réglé ce problème et m'a permis d'avancer.

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

Mise à jour : Comme @rodgerdpack l'a mentionné, la commande change et j'ai mis à jour ce qui précède. En général, voir https://rvm.io/ pour les dernières nouvelles.

40voto

DanielaWaranie Points 850

Si vous le faites ne pas vouloir changer le script ET vous le faites ne pas vouloir ajouter un certain "pour toujours". à la liasse de certificats. Il existe une solution très agréable et rapide :

#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

Ensuite, exécutez votre script. Pour réinitialiser la variable d'environnement (pour les appels ultérieurs de script qui ne doivent pas utiliser ce certificat), connectez-vous à nouveau à votre système ou désactivez la variable d'environnement :

export CURL_CA_BUNDLE=

21voto

Richard Fairhurst Points 448

Curl est invoqué dans .rvm/scripts/fetch, qui se trouve par défaut dans votre répertoire personnel.

Modifiez-le en utilisant votre éditeur de texte préféré : par exemple,

 nano ~/.rvm/scripts/fetch

Aux lignes 56 et 58 (cela peut varier avec d'autres versions de RVM, bien sûr) vous verrez deux lignes qui commencent par

 fetch_command="curl ...

Il suffit d'ajouter -k après curl, de sauvegarder et de réessayer.

20voto

dbikard Points 318

Vous devez télécharger le certificat ca à partir de http://curl.haxx.se/ca/cacert.pem et les ajouter à votre fichier curl-ca-bundle-new.crt.

Pour trouver l'emplacement de ce fichier, utilisez :

   $ curl-config --ca

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

Sauvegardez votre fichier curl-ca-bundle.crt :

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

Ensuite, vous voulez concaténer les deux fichiers en utilisant :

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

17voto

messick Points 2102

Peut-être que toutes ces solutions compliquées étaient autrefois nécessaires, mais aujourd'hui, il vous suffit de mettre à niveau RVM et votre problème sera résolu :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X