la instalación del paquete falla con el error de verificación del certificado SSL

Cuando ejecuto bundle install para mi proyecto Rails 3 en Centos 5.5, falla con un error:

 Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://bb-m.rubygems.org/gems/multi_json-1.3.2.gem) An error occured while installing multi_json (1.3.2), and Bundler cannot continue. Make sure that `gem install multi_json -v '1.3.2'` succeeds before bundling. 

Cuando bash instalar la gem manualmente (mediante gem install multi_json -v '1.3.2' ) funciona. El mismo problema ocurre con muchas otras gems. Uso RVM (1.12.3), ruby ​​1.9.2, bundler 1.1.3.

¿Como arreglarlo?

Actualizar

Ahora que tengo el karma que … extraído suficientemente de esta respuesta, todos deberían saber que esto debería haber sido resuelto.

re: a través de Ownatik nuevamente la instalación del paquete falla con el error de verificación del certificado SSL

 gem update --system 

Mi respuesta sigue siendo correcta y la dejo abajo como referencia si eso no funciona para usted.


Honestamente, la mejor solución temporal es

[…] use la versión no-ssl de rubygems en su gemfile como una solución temporal.

a través del usuario Ownatik

lo que quieren decir es que está en la parte superior del Gemfile en el cambio de directorio de tu aplicación de Rails

source 'https://rubygems.org'

a

source 'http://rubygems.org'

tenga en cuenta que la segunda versión es http en lugar de http s

Reemplace la fuente de gem ssl con no-ssl como una solución temporal:

La razón es viejos rubygems. Primero debe actualizar la parte del sistema utilizando la fuente no ssl:

gem update --system --source http://rubygems.org/ (actualización temporal de la parte del sistema utilizando una conexión que no sea SSL).

Ahora está listo para usar la gem update .

Si está en un Mac y usa una versión reciente de RVM (~ 1.20), el siguiente comando funcionó para mí.

 rvm osx-ssl-certs update 

Este problema ahora debe ser reparado. Actualice los rubygems ( gem update --system ), asegúrese de que openssl esté en la versión más reciente en su sistema operativo, o pruebe estos consejos de que aún no funciona: http://railsapps.github.com/openssl-certificate-verify-failed. html

Solución temporal (según lo mencionado por Ownatik):

Cree o modifique un archivo llamado .gemrc en su ruta base, incluida la línea :ssl_verify_mode: 0

Esto evitará que bundler verifique los certificados SSL de gems cuando intente instalarlos.

Para dispositivos * nix, ‘home path’ significa ~/.gemrc . También puede crear /etc/gemrc si lo prefiere. Para Windows XP, ‘home path’ significa c:\Documents and Settings\All Users\Application Data\gemrc . Para Windows 7, C:\ProgramData\gemrc

En Windows7, puede descargar el archivo cacert.pem desde aquí y establecer la variable de entorno SSL_CERT_FILE en la ruta donde almacena el certificado, por ejemplo:

 SET SSL_CERT_FILE="C:\users\\cacert.pem" 

o puede establecer la variable en su script como este ENV['SSL_CERT_FILE']="C:/users//cacert.pem"

Reemplace con su nombre de usuario.

La solución real a este problema, si está utilizando RVM:

  1. Actualizar rubygems: gem update --system
  2. Use RVM para actualizar los rvm osx-ssl-certs update all SSL: rvm osx-ssl-certs update all

¡Punta de sombrero para este consejo en el proyecto RailsApps !

Para aquellos de ustedes que tienen Ruby instalado a través de RVM y quieren una solución rápida (prefieren no leer según la solicitud de Bruno) simplemente prueben esto:

 rvm remove 1.9.x (or whatever version of ruby you are using) rvm pkg install openssl rvm install 1.9.2 --with-openssl-dir=$rvm_path/usr 

Para obtener más detalles, aquí está el enlace donde encontré la solución.

http://railsapps.github.com/openssl-certificate-verify-failed.html

Por cierto, no tuve que tocar mis certificados en Ubuntu.

Lo mejor de todo, esto no es una solución. Descargará gems a través de SSL y fallará si hay un problema como un hombre en el ataque medio, que es mucho mejor que simplemente desactivar la seguridad.

Esto ha sido arreglado

http://guides.rubygems.org/ssl-certificate-update/

Ahora que se ha lanzado RubyGems 2.6.x, puede actualizar manualmente esta versión.

Descargue https://rubygems.org/downloads/rubygems-update-2.6.7.gem

Descargue el archivo en un directorio que luego pueda señalar (por ejemplo, la raíz de su disco duro C 🙂

Ahora, usando su Símbolo del sistema:

 C:\>gem install --local C:\rubygems-update-2.6.7.gem C:\>update_rubygems --no-ri --no-rdoc 

Después de esto, gemversion debe informar la nueva versión de actualización.

Ahora puede desinstalar con seguridad la gem rubygems-update:

 C:\>gem uninstall rubygems-update -x 

Puede descargar una lista de certificados de CA del sitio web de curl en http://curl.haxx.se/ca/cacert.pem

Luego configure la variable de entorno SSL_CERT_FILE para indicarle a Ruby que lo use. Por ejemplo, en Linux:

 $ SSL_CERT_FILE=~/cacert.pem bundle install 

(Referencia: https://gist.github.com/fnichol/867550 )

Instrucción de copiar y pegar aquí sobre el archivo .pem

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

Para la verificación del certificado fallido

Si ha leído las secciones anteriores, sabrá lo que esto significa (y la vergüenza le afectará si no lo ha hecho).

Necesitamos descargar AddTrustExternalCARoot-2048.pem . Abra un símbolo del sistema y escriba:

C:> joya que rubygems C: /Ruby21/lib/ruby/2.1.0/rubygems.rb Ahora, busquemos ese directorio. Desde dentro de la misma ventana, ingrese la parte de la ruta hasta la extensión del archivo, pero utilizando barras invertidas en su lugar:

C:> iniciar C: \ Ruby21 \ lib \ ruby ​​\ 2.1.0 \ rubygems Esto abrirá una ventana del Explorador dentro del directorio que indicamos.

Paso 3: Copie el nuevo certificado de confianza

Ahora, busque el directorio ssl_certs y copie el archivo .pem que obtuvimos del paso anterior dentro.

Se mostrará con otros archivos como GeoTrustGlobalCA.pem.

mismo problema pero con diferentes gems aquí:

 Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://bb-m.rubygems.org/gems/builder-3.0.0.gem) An error occured while installing builder (3.0.0), and Bundler cannot continue. Make sure that `gem install builder -v '3.0.0'` succeeds before bundling. 

solución temporal: gem install builder -v '3.0.0' hace posible continuar la bundle install

Esta es la forma de solucionar este problema en Windows:

descargue el archivo .perm y luego configure SSL_CERT_FILE en el símbolo del sistema

https://gist.github.com/fnichol/867550

Me sale un error ligeramente diferente, aunque quizás relacionado, en Ubuntu 12.04:

 Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=unknown state: sslv3 alert handshake failure (https://d2chzxaqi4y7f8.cloudfront.net/gems/activesupport-3.2.3.gem) An error occured while installing activesupport (3.2.3), and Bundler cannot continue. Make sure that `gem install activesupport -v '3.2.3'` succeeds before bundling. 

Sucede cuando ejecuto bundle install con la source 'https://rubygems.org' en un Gemfile.

Este es un problema con OpenSSL en Ubuntu 12.04. Ver el número Rubygems # 319 .

Para solucionarlo, ejecute apt-get update && apt-get upgrade en Ubuntu 12.04 para actualizar su OpenSSL.

La solución más simple:

 rvm pkg install openssl rvm reinstall all --force 

Voila!

Pude rastrear esto hasta el hecho de que los binarios que rvm descargas rvm no juegan bien con OpenSSL de OS X, que es antiguo y ya no es utilizado por el sistema operativo.

La solución para mí fue forzar la comstackción cuando rvm Ruby vía rvm :

 rvm reinstall --disable-binary 2.2 

Mi solución permanente para Windows:

  1. Descargue CACert , guárdelo como C:\ruby\ssl_certs\GlobalSignRootCA.pem en http://guides.rubygems.org/ssl-certificate-update/

  2. Cree una variable de sistema llamada ” SSL_CERT_FILE “, establecida en C:\ruby\ssl_certs\GlobalSignRootCA.pem .

  3. Inténtalo de nuevo: gem install bundler :

 C:\gem sources *** CURRENT SOURCES *** https://rubygems.org/ C:\gem install bundler Fetching: bundler-1.13.5.gem (100%) Successfully installed bundler-1.13.5 1 gem installed 

Gracias a @ Alexander.Iljushkin por:

gem update --system --source http://rubygems.org/

Después de eso, el bundler aún falló y la solución fue:

gem install bundler

Me estaba dando un error similar. Así es como resolví esto: en tu directorio de ruta, busca Gemfile. Edite el origen en el archivo gem en http en lugar de https y guárdelo. Esto podría instalar el paquete sin el certificado SSL issue.l

Para la máquina de Windows, verifique su versión de gem con

 gem --version 

Luego actualiza tu joya de la siguiente manera:

  • Ejecutando 1.8.x: descarga 1.8.30
  • Ejecutando 2.0.x: descarga 2.0.15
  • Ejecutando 2.2.x: descarga 2.2.3

Descargue el archivo en un directorio que luego pueda señalar (por ejemplo, la raíz de su disco duro C 🙂

Ahora, usando su Símbolo del sistema:

 C:\>gem install --local C:\rubygems-update-1.8.30.gem C:\>update_rubygems --no-ri --no-rdoc 

Ahora, la instalación del paquete tendrá éxito sin un error de verificación del certificado SSL.

Instrucción más detallada está aquí

Esto funcionó para mí:

  • descargue la última joya en https://rubygems.org/pages/download
  • instala la gem con la gem install --local [path to downloaded gem file]
  • actualiza las gems con update_rubygems
  • compruebe que está en la última versión de gem --version con gem --version

Tuve que reinstalar openssl:

 brew uninstall --force openssl brew install openssl 

Recientemente me enfrenté con este problema y seguí los pasos que se describen aquí . Es posible que no esté apuntando al certificado OpenSSL correcto. Despues de correr:

 rvm osx-ssl-certs status all rvm osx-ssl-certs update all 

y

 export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt 

el paquete completo funcionó!

Descargue rubygems-update-2.6.7.gem .

Ahora, usando su Símbolo del sistema:

 C:\>gem install --local C:\rubygems-update-2.6.7.gem C:\>update_rubygems --no-ri --no-rdoc 

Después de esto, gem --version debe informar la nueva versión de actualización.

Ahora puede desinstalar con seguridad la gem rubygems-update:

 C:\>gem uninstall rubygems-update -x Removing update_rubygems Successfully uninstalled rubygems-update-2.6.7 

Para tener en cuenta, si está tomando gems de una fuente certificada por una autoridad certificadora interna (o se está conectando a una fuente externa a través de un proxy web de la compañía con inspección SSL), dirija su variable env SSL_CERT_FILE a su cadena de certificados . Esto probablemente solo exija exportar su certificado raíz de su almacén de certificados (System Keychain en macOS) a una ubicación accesible desde su shell, es decir:

 export SSL_CERT_FILE=~/RootCert.pem 

Si está utilizando rails-assets

Si usaba https://rails-assets.org/ para administrar sus activos, ninguna respuesta lo ayudará. Incluso la conversión a http no ayudará.

La solución más simple es usar esta fuente en su lugar, http://insecure.rails-assets.org . Esto ha sido mencionado en su página de inicio .

Lo único que funcionó para mí en el sistema heredado de Windows y en la versión de ruby ​​1.9 es descargar el archivo cacert de http://guides.rubygems.org/ssl-certificate-update/

Y luego ejecuta debajo del comando antes de ejecutar la instalación del paquete

 bundle config --global ssl_ca_cert /path/to/file.pem