Error de SSL al instalar rubygems, no se puede extraer datos de 'https://rubygems.org/

269

Estoy tratando de hacer el tutorial de Michael Hartl. Cuando intento instalar rieles 3.2.14 en mi conjunto de gemas, aparece el siguiente problema:

$ gem instalar rieles -v 3.2.14

ERROR: no se pudo encontrar una gema válida 'rieles' (= 3.2.14), esta es la razón:

No se pueden descargar datos de https://rubygems.org/ - SSL_connect devuelto = 1 errno = 0 estado = SSLv3 lee el certificado del servidor B: la verificación del certificado falló ( https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz )

Después de buscar en Google, descubrí que podía usar una fuente no SSL para rubygems, así que ejecuté:

sudo gem sources -a http://rubygems.org

Luego, cuando intenté instalar rieles nuevamente, fue exitoso. Sin embargo, todavía tengo el problema anterior, pero como advertencia:

ADVERTENCIA: No se pueden obtener datos de ' https://rubygems.org/ ': SSL_connect devuelto = 1 errno = 0 estado = SSLv3 lee el certificado del servidor B: la verificación del certificado falló ( https://s3.amazonaws.com/production.s3 .rubygems.org / specs.4.8.gz )

¿Cómo puedo eliminar esta advertencia / error por completo?

Estoy usando lo siguiente:

  • rvm 1.22.15
  • ruby 2.0.0p247 (2013-06-27 revisión 41674) [x86_64-darwin12.3.0]
  • OSX 10.8.5
tpw
fuente
Casi parece un error de regresión. Me di cuenta de que uno de mis estudiantes tiene el mismo problema hoy en OS X. Todavía estoy trabajando en el problema. Hay otras preguntas relacionadas (¿idénticas?) Sobre SO del año pasado.
vgoff
Este es un error conocido en 2.0.*versiones obsoletas ( ) de rubygems. Intente actualizar a la última versión de rubygems: gem update --systemy luego vuelva a ejecutar gem install.
Aleksei Matiushkin el
Si está bien actualizar su versión de ruby, actualícela. Este problema se soluciona en la nueva versión de ruby.
Hong
Después de agregar la fuente http, la ejecución gem sources -r https://rubygems.org/funcionó para mí (en cuanto a eliminar la advertencia).
BrainSlugs83
Hay demasiadas respuestas largas, mientras que esto se puede resolver en una línea en Linux / Mac: stackoverflow.com/a/56993071/5689995
laimison

Respuestas:

382

Para usuarios de RVM y OSX

Asegúrese de utilizar la última versión de rvm:

rvm get stable

Entonces puedes hacer dos cosas:

  1. Actualizar certificados:

    rvm osx-ssl-certs update all
  2. Actualizar rubygems:

    rvm rubygems latest

Para usuarios no RVM

Encuentra la ruta para el certificado:

cert_file=$(ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE')

Generar certificado:

security find-certificate -a -p /Library/Keychains/System.keychain > "$cert_file"
security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$cert_file"

Todo el código: https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/osx-ssl-certs


Para usuarios no OSX

Asegúrese de actualizar el paquete ca-certificates. (en sistemas antiguos puede que no esté disponible; no use un sistema antiguo que ya no reciba actualizaciones de seguridad)

Nota de Windows

Las compilaciones de Ruby Installer para Windows son preparadas por Luis Lavena y la ruta a los certificados mostrará algo como C:/Users/Luis/...verificar https://github.com/oneclick/rubyinstaller/issues/249 para más detalles y esta respuesta https://stackoverflow.com / a / 27298259/497756 para la reparación.

mpapis
fuente
¿Hay alguna otra forma de actualizar los certificados si no está usando RVM?
Eduardo
La ejecución rvm rubygems latestresultó en un error quejándose de la falta de sumas de verificación. Sin embargo, las cosas comenzaron a funcionar sin eso también ... aparentemente podrías forzarlo --verify-downloads 1si lo necesitaras. ¿Alguna idea de por qué podría ser? Trató de recuperar la versiónrubygems-2.1.6
Timo
rvm codifica los md5s para descargas en su código, solo los agregué a la headversión y los lanzaré stablepronto.
mpapis
2
Lo ejecuto en Windows y obtengo una ruta que ni siquiera existe en mi computadora "C: /Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0k/ssl /cert.pem "No hay ningún usuario llamado Luis tampoco. ¿Que demonios?
isimmons
3
¿Alguna sugerencia para los usuarios de Mac Mojave? Corriendo haciapermission denied: /private/etc/ssl/cert.pem
Chandrew
241

Últimos hallazgos ...

https://gist.github.com/luislavena/f064211759ee0f806c88

Lo más importante ... descargue https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

Averigua dónde pegarlo

C:\>gem which rubygems
C:/Ruby21/lib/ruby/2.1.0/rubygems.rb

Luego solo copie el archivo .pem en ../2.1.0/rubygems/ssl_certs/ y continúe con su negocio.

beauXjames
fuente
8
¡Asegúrese de guardar con la .pemextensión, no .pem.txt!
Dan Dascalescu
3
¿Qué pasa si no funciona? Hice lo que dicen tus respuestas, ¡pero sigo recibiendo el error! 1) Tengo el archivo AddTrustExternalCARoot-2048.pem, 2) coloqué el archivo en C:\Ruby193\lib\ruby\1.9.1\rubygems\ssl_certs, 3) ejecuto gem install susyy obtengo el mismo errorUnable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Verde
intente actualizar su instalación de Ruby ... esta esencia no garantiza la compatibilidad con versiones anteriores de su versión
beauXjames
1
Algunas notas sobre el enlace de luis lavena que diste. Es posible que desee instalar rubygems desde un archivo de gemas en lugar de los archivos zip que menciona. No he encontrado un comando para instalar desde una gema descomprimida o un archivo zip. Gema aquí: rubygems.org/pages/download . El comando es -gem install --local C:\Downloads\rubygems-update-2.4.5.gem
Erran Morad
9
El enlace de descarga ya no es válido. Para aquellos de ustedes que todavía enfrentan este problema, consulte la respuesta de Dheerendra para una solución
Llama.new
174

Para usuarios de windows

Ir al enlace http://rubygems.org/pages/download

  1. Descargue el último archivo zip (en mi caso 2.4.5)
  2. Descomprimirlo
  3. ejecute "ruby setup.rb" en la carpeta descomprimida
  4. ahora ejecuta el comando gem install
Dheerendra Kulkarni
fuente
1
Me funcionó en Windows 8.1, Ruby 2.0.0. Salud.
Yi Zeng
77
La mejor solución para usuarios de Windows
Sorin Haidau
1
Mucho más fácil que las alternativas para Windows enumeradas en otras respuestas, y funcionó perfectamente en Windows 7 de 64 bits. ¡Gracias!
Gurgadurgen
1
Esto no funciona para mi. Devkit no es compatible con la última versión de ruby ​​en windows 7
roo2
2
Funciona para mí en Windows 10 y Ruby 2.1.0. ¡Gracias!
MSC
54

Si desea utilizar la fuente no SSL, intente eliminar primero la fuente HTTPS y luego agregue la fuente HTTP:

sudo gem sources -r https://rubygems.org
sudo gem sources -a http://rubygems.org  

ACTUALIZAR:

Como dice mpapis, esto debe usarse solo como una solución temporal. Podría haber algunos problemas de seguridad si está accediendo a RubyGems a través de una fuente que no es SSL.

Una vez que ya no se necesite la solución alternativa, debe restaurar la fuente SSL:

sudo gem sources -r http://rubygems.org
sudo gem sources -a https://rubygems.org
Eduardo
fuente
no deja de votar, ya que esto soluciona este problema inmediato, pero deja a su rubí con certificados antiguos que todavía es malo
mpapis
1
He actualizado la respuesta para intentar aclarar que esto es solo una solución para el problema raíz. Solo traté de resolver el problema de Terin cuando trató de usar la fuente no SSL.
Eduardo
55
FYI, tuve que hacer sudo gem sources -r https://rubygems.org/y sudo gem sources -r http://rubygems.org/. Observe el final /.
Ross Rogers
Si, es posible. Creo que depende de la forma en que se agregó la fuente en primer lugar. Quiero decir, si la fuente se agregó con el final /, también debería eliminarse con el final /.
Eduardo
La única solución que funcionó para mí fue descargar la gema fu @ ^! #. Muchas gracias!
Genarito
16

En Windows, deberá usar la HTTPfuente para actualizar y gemluego volver a usar HTTPS.

gem sources -r https://rubygems.org/
gem sources -a http://rubygems.org/
gem update --system
gem sources -r http://rubygems.org/
gem sources -a https://rubygems.org/

Editar: Advertencia No estoy seguro de si esto es seguro . ¿Alguien sabe si los paquetes ruby ​​están firmados? La respuesta aceptada parece una mejor solución.

roo2
fuente
Gracias por compartir; cambiar temporalmente el https a http funcionó pero necesitaba cambiar directamente el archivo de gemas.
Noha Kareem
2
En mi caso, necesitaba un seguimiento / con la URL https.
Alwyn Schoeman
1
Como actualización de esta respuesta, es una buena idea antes de comenzar gem sources -la ver sus fuentes antes y después de actualizar el sistema. Si la actualización falla, especifique un número de versión justo después del sistema -. Vea rubygems.org/gems/rubygems-update/versions o pregunte a un compañero de trabajo qué gem -vinformes.
Gary S. Weaver
10

Para usuarios de Windows (y tal vez otros)

Rubygems.org tiene una guía que no solo explica cómo solucionar este problema, sino también por qué tantas personas lo tienen: Actualización del certificado SSL La razón del problema es que rubygems.org cambió a un certificado SSL más seguro (SHA-2 que usar cifrado de 256 bits). La herramienta de línea de comandos rubygems agrupa la referencia al certificado correcto. Por lo tanto, los rubygems en sí no pueden actualizarse utilizando una versión anterior de rubygems. Rubygems primero debe actualizarse manualmente.

Primero averigua qué rubygems tienes:

rubygems v

Dependiendo de si tiene un 1.8.x, 2.0.xo 2.2.x, deberá descargar una gema de actualización, llamada "rubygems-update-XYZgem", donde XYZ es la versión que necesita. Running 1.8.x: descarga: https://github.com/rubygems/rubygems/releases/tag/v1.8.30 Running 2.0.x: descarga: https://github.com/rubygems/rubygems/releases/tag/v2 .0.15 Ejecutando 2.2.x: descarga: https://github.com/rubygems/rubygems/releases/tag/v2.2.3

Instalar actualización joya:

gem install –-local full_path_to_the_gem_file

Ejecutar actualización de gema:

update_rubygems --no-ri --no-rdoc

Comprueba que rubygems se haya actualizado:

rubygems v

Desinstalar la gema de actualización:

gem uninstall rubygems-update -x

En este punto, puede estar bien. Pero es posible que no tenga el último archivo de clave pública para el nuevo certificado. Para hacer esto:

Descargue el último certificado, (actualmente AddTrustExternalCARoot-2048.pem) de https://rubygems.org/pages/download . Todos los certificados también se encuentran en: https://github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs

Averigua dónde ponerlo:

gem which rubygems

Coloque este archivo en el directorio "rubygems \ ssl_certs" en esta ubicación.

Según el compromiso de rubygems , los certificados se mueven a directorios más específicos. Por lo tanto, actualmente se espera que el certificado (AddTrustExternalCARoot-2048.pem) esté en la siguiente rutalib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

John Pankowicz
fuente
8

Intente utilizar el sitio web de origen para las gemas, es decir, rubygems.org. Use http en lugar de https. Este método no implica ningún trabajo, como la instalación de certificados y todo eso.

Ejemplo

gem install typhoeus --source http://rubygems.org

Esto funciona, pero hay una advertencia.

La gema está instalada, pero la documentación no se debe a errores de certificación. Aquí está el error que recibo

Parsing documentation for typhoeus-0.7.0 WARNING: Unable to pull 
data from 'https://rubygems.org/': SSL_connect returned=1 errno=0 
state=SSLv3 read server certificate B: certificate verify failed 
(https://rubygems.org/latest_specs.4.8.gz)
Erran Morad
fuente
7

Correr gem update --systemme funcionó

usuario3408293
fuente
66
Esto funcionó para mí también en Windows. Tuve que cambiar temporalmente a HTTP clásico, luego actualizar, luego volver a SSL.
Tom Mayfield
1
ERROR. SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Verde
fuentes de gemas --remove rubygems.org fuentes de gemas - una actualización de gemas rubygems.org --sistema
Stefan Steiger
4

Asegúrese de que el reloj de su sistema sea correcto

Este error exacto me ocurrió hoy en una máquina virtual Ubuntu que se ejecuta en VirtualBox. Probé la mayoría de las soluciones que se muestran arriba antes de notar que había reanudado un estado suspendido muy antiguo, y mi reloj estaba apagado por muchos días.

Actualizar el reloj solucionó de inmediato mi problema. Aquí está el comando que usé en mi caso:

servicio sudo ntp stop && sudo ntpdate pool.ntp.org && servicio sudo ntp start

dbrewer
fuente
4

Simplemente desinstalar y reinstalar openssl con homebrew resolvió este problema por mí.

brew uninstall --force openssl

brew install openssl

ntj
fuente
1
Con las versiones más recientes de homebrew, es posible que deba ejecutar el comando de la siguiente manera: brew uninstall --ignore-dependencies openssl(que es el equivalente de la forcebandera anterior)
Batkins
3

Para usuarios de Fedora.

Actualice el cert.pemarchivo más nuevo que proporciona cURL: http://curl.haxx.se/ca/cacert.pem

curl -o `ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE' |tr -d \"` http://curl.haxx.se/ca/cacert.pem
ENDOH takanao
fuente
¿Hay cmd de Windows o equivalente de PowerShell para esto?
Erran Morad
3

Si está utilizando Windows, abra https://rubygems.org/ con Internet Explorer.

Haga clic en la información de seguridad e importe el certificado. La conclusión es que su cadena de certificación está desactualizada y necesita agregar este nuevo certificado. Recuerde que esto no es una violación de seguridad siempre que pueda validar el certificado como confiable.

Paulo Fidalgo
fuente
Eso no hizo nada para mí ... ¿OpenSSL incluso usa el almacén de certificados de Windows?
Julien Ruffin
2

En mi caso, los certificados de Ubuntu CA estaban desactualizados. Lo arreglé ejecutando:

 sudo update-ca-certificates
maniek
fuente
2

Enfoque / one-liner que se puede automatizar para descargar gemas usando HTTP en lugar de HTTPS:

printf -- '---\n:sources:\n- http://rubygems.org\n' | tee ~/.gemrc
laimison
fuente
¡Funciona perfecto si encuentra un problema en un contenedor acoplable!
user7364588
1

El caso particular de RubyGems (la herramienta de línea de comando) es que requiere agrupar dentro de su código los certificados de confianza, lo que permite a RubyGems establecer una conexión con los servidores incluso cuando el sistema operativo base no puede verificar su identidad.

Hasta hace unos meses, este certificado fue proporcionado por una CA, pero el certificado más nuevo es proporcionado por uno diferente.

Debido a esto, las instalaciones existentes de RubyGems tendrían que actualizarse antes del cambio del certificado y dar tiempo suficiente para que el cambio se extienda (y las personas se actualicen)

Cualquiera puede encontrar su solución siguiendo los sencillos pasos que se detallan en el siguiente enlace.

https://gist.github.com/luislavena/f064211759ee0f806c88

ImranNaqvi
fuente
1

Tratar

gem update --system

Espero que resuelva el problema.

puneet18
fuente
Funciona para mi. Gracias. Ubuntu; Ruby se instaló usando apt install ruby.
Marslo
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Jonathan
1

Descargue el archivo cacert.pem de http://curl.haxx.se/ca/cacert.pem . Guarde este archivo en C: \ RailsInstaller \ cacert.pem.

Ahora haga que Ruby conozca su paquete de autoridad certificadora configurando SSL_CERT_FILE. Para configurar esto en su sesión actual de símbolo del sistema, escriba:

establecer SSL_CERT_FILE = C: \ RailsInstaller \ cacert.pem

Shubham Kumar Gupta Ggps
fuente
0

Tuve el mismo problema al intentar instalar gema de pepino. Sin embargo, noté que la gema del paquete ya estaba instalada con ruby ​​2.0. Creé un Gemfile.rb en la carpeta del proyecto con las gemas requeridas y seguí estos pasos

  1. Navega a la carpeta del proyecto
  2. Escriba paquete de instalación

Todas las gemas requeridas instaladas.

usuario3037926
fuente
0

Para Illumos / Solaris con OpenCSW pkgutil:

Instale CSWcacertificates antes de 'gem install'

pkgutil -yi CSWcacertificates

Si está utilizando un kit ruby ​​que no es de OpenCSW, su versión ruby ​​puede esperar encontrar el archivo del certificado en otro lugar. En este caso, simplemente hice un enlace simbólico /etc/opt/csw/ssl/cert.pem de OpenCSW al lugar esperado.

Comprueba dónde Ruby espera encontrarlo:

export cf=`ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'` && echo $cf

Luego, si hay una discrepancia, vincúlela:

ln -s /etc/opt/csw/ssl/cert.pem $cf && file $cf
Jacob
fuente
0

Para usuarios de Windows:

Después de instalar Ruby 2.2.3 (+ rubygems 2.5.1) con éxito en una máquina de prueba con acceso a Internet, tuve este error SSL cuando instalé bundler en una máquina de producción, dentro de la red.

Como tenía limitaciones de acceso a la red y no había forma de cambiar la configuración para el acceso SSL, y en base a los mensajes de error, realicé los siguientes pasos para poder finalizar la instalación del paquete (esto puede sonar loco, pero trabajó...).

A través de una máquina con acceso ilimitado a Internet, descargó los siguientes archivos:

Agregué estos archivos en un servidor de intranet, manteniendo la estructura de carpetas de los enlaces anteriores:

  • $ INTRANET_HOME

spec.4.8.gz e latest_specs.4.8.gz

  • $ INTRANET_HOME \ quick \ Marshal.4.8

bundler-1.11.2.gemspec.rz

  • $ INTRANET_HOME \ gems

bundler-1.11.2.gem

Luego agregué mi intranet para acceder a la fuente de gemas:

gem sources -a http://mydomain.com.br

He ejecutado con éxito el "paquete de instalación de gemas" después de la instalación, todo lo que se necesitó fue eliminar mi intranet de la gema:

gem sources -r http://mydomain.com.br

Espero que sea útil en cualquier situación similar ...

Rogério Arantes
fuente
0

Como usuario de Windows 10, seguí la respuesta de Dheerendra , y me funcionó un día. Al día siguiente, volví a experimentar el problema y su solución no funcionó. Para mí, la solución fue actualizar bundlercon:

gem update bundler

Creo que mi versión bundlertenía más de unos pocos meses.

Alejandro
fuente
0

Asegúrese de haber instalado ruby ​​con --disable-binary opción , si no, desinstálelo y vuelva a instalarlo con la opción.

Más información aquí

Feuda
fuente
0

La respuesta ya no es válida. Desde que encontré el problema con el viejo rubí de Windows en este momento, publicaré la respuesta.

Cuando quería instalar una gema de soporte activo:

gem in activesupport --version 5.1.6

ERROR:  Could not find a valid gem 'activesupport' (= 5.1.6), here is why:
          Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B
: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)

Los siguientes pasos deben copiar solo los certificados de las nuevas ventanas de ruby. Tome el último ruby ​​(o al menos ruby 2.4.0 ) y haga lo siguiente:

Copie los certificados de estos directorios (ajústelos a sus necesidades):
C:\prg_sdk\rubies\Ruby-2.4\lib\ruby\2.4.0\rubygems\ssl_certs\rubygems.org
C:\prg_sdk\rubies\Ruby-2.4\lib\ruby\2.4.0\rubygems\ssl_certs\index.rubygems.org

al destino (nuevamente ajuste a lo que necesita):
C:\prg_sdk\rubies\Ruby231-p112-x64\lib\ruby\2.3.0\rubygems\ssl_certs

tukan
fuente