Error de SSL Al instalar rubygems, no se pueden extraer datos de ‘https://rubygems.org/

Estoy tratando de hacer el tutorial de Michael Hartl. Cuando bash instalar Rails 3.2.14 en mi gemset, aparece el siguiente problema:

$ gem install rails -v 3.2.14

ERROR: No se pudo encontrar una joya válida ‘Rails’ (= 3.2.14), aquí está el por qué:

Imposible descargar datos de https://rubygems.org/ – SSL_connect returned = 1 errno = 0 state = SSLv3 read server certificate B: certificate verify failed ( 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 traté de instalar los Rails de nuevo, fue exitoso. Sin embargo, todavía tengo el problema anterior pero como advertencia:

ADVERTENCIA: no se pueden extraer datos de ‘ https://rubygems.org/ ‘: SSL_connect returned = 1 errno = 0 state = SSLv3 read server certificate B: certificate verify failed ( 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 revision 41674) [x86_64-darwin12.3.0]
  • OSX 10.8.5

Para usuarios de RVM y OSX

Asegúrate de usar el último rvm:

 rvm get stable 

Entonces puedes hacer dos cosas:

  1. Actualizar certificados:

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

     rvm rubygems latest 

Para usuarios sin RVM

Encuentre 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" 

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


Para usuarios que no sean OSX

Asegúrese de actualizar ca-certificates paquete. (en sistemas antiguos podría no estar disponible, no use ese sistema antiguo que ya no recibe actualizaciones de seguridad)

Nota de Windows

Las comstackciones de Ruby Installer para Windows están preparadas por Luis Lavena y la ruta de acceso a los certificados mostrará algo como C:/Users/Luis/... para obtener más detalles, visite https://github.com/oneclick/rubyinstaller/issues/249. y esta respuesta https://stackoverflow.com/a/27298259/497756 para solucionarlo.

Últimos hallazgos …

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

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

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

Para usuarios de Windows

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

  1. Descargue el último archivo comprimido (en mi caso, 2.4.5)
  2. Descomprimirlo
  3. ejecuta “ruby setup.rb” en la carpeta descomprimida
  4. ahora ejecuta el comando gem install

Si desea utilizar el origen que no es SSL, intente primero eliminar el origen HTTPS y luego agregue el HTTP.

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

ACTUALIZAR:

Como afirma mpapis, esto debería usarse solo como una solución temporal. Podría haber algunos problemas de seguridad si accede a RubyGems a través de la fuente no SSL.

Una vez que la solución no sea necesaria, debe restaurar el origen SSL:

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

En Windows, deberá usar HTTP fuente HTTP para actualizar la gem luego 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.

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é tanta gente lo está teniendo: Actualización de certificado SSL El motivo del problema es rubygems.org cambiado a un certificado SSL más seguro (SHA-2 que use encriptación de 256 bits). La herramienta de línea de comandos de rubygems agrupa la referencia al certificado correcto. Por lo tanto, los rubygems en sí no se pueden actualizar utilizando una versión anterior de rubygems. Rubygems primero debe actualizarse manualmente.

Primero averigua qué Rubygems tienes:

 rubygems –v 

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

Instalar actualización gem:

 gem install –-local full_path_to_the_gem_file 

Ejecutar actualización joya:

 update_rubygems --no-ri --no-rdoc 

Verifique que rubygems haya sido actualizado:

 rubygems –v 

Desinstalar joya de actualización:

 gem uninstall rubygems-update -x 

En este punto, puedes 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 certs también se encuentran en: https://github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs

Descubre dónde ponerlo:

 gem which rubygems 

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

Según rubygems commit , 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 ruta siguiente lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

Intenta usar el sitio web fuente para las gems, es decir, rubygems.org. Use http en lugar de https. Este método no implica ningún trabajo, como la instalación de certs y todo eso.

Ejemplo –

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

Esto funciona, pero hay una advertencia.

La gem está instalada, pero la documentación no se debe a errores de cert. Aquí está el error que obtengo

 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) 

Ejecutar gem update --system funcionó para mí

La simple desinstalación y reinstalación de openssl con homebrew resolvió este problema para mí.

brew uninstall --force openssl

brew install openssl

Para usuarios de Fedora

Actualice el cert.pem al archivo más nuevo que proporciona por 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 

Si está usando Windows, abra https://rubygems.org/ con internet explorer.

Haga clic en 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 y cuando pueda validar el certificado como confiable.

Asegúrate de que el reloj de tu sistema sea correcto

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

La actualización del reloj solucionó inmediatamente mi problema. Aquí está el comando que utilicé en mi caso:

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

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

  sudo update-ca-certificates 

El caso particular de RubyGems (la herramienta de línea de comandos) es que requiere agrupar dentro de su código los certificados de confianza, que permiten 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 suficiente tiempo para que el cambio se propague (y las personas se actualicen)

Cualquier persona puede encontrar su solución siguiendo los pasos simples que figuran en el siguiente enlace

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

Tratar

 gem update --system 

Espero que resuelva el problema.

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

  1. Navega a la carpeta del proyecto
  2. Tipo bundle install

Todas las gems requeridas instaladas.

Para Illumos / Solaris usando OpenCSW pkgutil:

Instalar CSWcacertificates antes de ‘gem install’

 pkgutil -yi CSWcacertificates 

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

Compruebe dónde Ruby espera encontrarlo:

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

Luego, si hay una discrepancia, vincúlala:

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

O puede ser prevenido por un firewall como yo. Prueba esto:

sudo gem install –http-proxy http: // localhost: puerto cocoapods -V

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 de SSL cuando instalé el paquete 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 función de los mensajes de error, realicé los pasos a continuación para poder finalizar la instalación del paquete (esto puede parecer una locura, pero trabajó…).

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

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

  • $ 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 gems:

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

He corrido con el éxito del “paquete de instalación de gem” después de la instalación, todo lo que necesité fue eliminar mi intranet de la gem:

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

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

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 el bundler con:

gem update bundler

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

Asegúrate de haber instalado ruby ​​con la opción –disable-binary , si no, desinstálala y vuelve a instalarla con la opción.

más información aquí

La respuesta ya no es válida. Ya que he encontrado el problema con el Ruby de Windows más antiguo en este momento, publicaré la respuesta.

Cuando quería instalar una gem activesupport:

 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 ruby. Tome el último Ruby (o al menos Ruby 2.4.0 ) y haga lo siguiente:

copie certificados de estos directorios (ajústese 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

a destino (de nuevo se ajusta a lo que necesita):
C:\prg_sdk\rubies\Ruby231-p112-x64\lib\ruby\2.3.0\rubygems\ssl_certs