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


264

Cuando ejecuto bundle installmi 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 intento instalar la gema manualmente (por gem install multi_json -v '1.3.2') funciona. El mismo problema ocurre con varias otras gemas. Yo uso RVM (1.12.3), ruby ​​1.9.2, bundler 1.1.3.

¿Como arreglarlo?


Frente al mismo problema. Pero con otra gema: Gem :: RemoteFetcher :: FetchError: SSL_connect devuelto = 1 errno = 0 estado = SSLv3 lee el certificado del servidor B: la verificación del certificado falló ( bb-m.rubygems.org/gems/activeresource-3.2.3.gem )
Sathish

44
Estoy teniendo el mismo error con las mismas circunstancias. Sospecho, dadas estas otras respuestas, que es un problema del lado del servidor.
asfallows

Tuve un problema similar en Rails 5. Lo solucioné agregando source "https://rubygems.org''el Gemfile y ejecutando 'gem update --system'. Puedes encontrar más información aquí .
Nesha Zoric

Nesha, esa solución funcionó para mí. ¡Gracias!
Martin Marino

Respuestas:


310

Actualizar

Ahora que tengo karma que ... extraí lo suficiente de esta respuesta, todos deberían saber que esto debería haberse solucionado.

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

gem update --system

Mi respuesta sigue siendo correcta y se deja a continuación como referencia si eso no funciona para usted.


Sinceramente, 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 significan está en la parte superior del Gemfilecambio de directorio de la aplicación en sus rieles

source 'https://rubygems.org'

a

source 'http://rubygems.org'

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


1
Estoy aceptando esta respuesta, porque eso fue lo que hice al principio. Más tarde cambié mi estrategia de despliegue. Ahora ejecuto bundle la aplicación en otro servidor y luego la copio (con gemas en el vendordirectorio) al servidor sobre el que escribí en la pregunta.
mrzasa

66
Esto no funcionó para mí. El enlace proporcionado por @fbernier a continuación lo arregló para mí.
Scott Fister el

55
Esto no funciona Ejecutar esto solo proporciona resultados de ¿ Latest version currently installed. Aborting. Alguna otra idea?
Matt Huggins el

1
En términos de cambiar la fuente, para personas nuevas como yo. Especificaría que este archivo se encuentra en el directorio de su aplicación. Lo estaba buscando en el directorio railsinstaller. De todos modos, cambié la fuente y finalmente funcionó. Recibo errores de certificado cuando intento ejecutar la actualización :(
Brian

2
gem update --systemfalla exactamente con el mismo error de certificado: \
BlueRaja - Danny Pflughoeft

226

Reemplace la fuente de gemas SSL con otras que no sean SSL como solución temporal:


8
¡OMG funcionó a las mil maravillas! Estoy en Windows 7 x64 detrás de un proxy corporativo. ¡Muchas gracias!
Șerban Ghiță

14
Me sorprende que esto no haya sido clasificado más alto, esta fue la solución rápida más fácil.
hwatkins

3
buena solución temporal ... tenga en cuenta lo siguiente :: RubyGems se ha configurado para servir gemas a través de las siguientes URL a través de su historial: * gems.rubyforge.org (RubyGems 1.3.6 y anteriores) * rubygems.org (RubyGems 1.3. 7 a 1.8.25) * rubygems.org (RubyGems 2.0.1 y más reciente)
beauXjames

1
la solución más rápida para mí en Windows 8
Tisch

3
En mi humilde opinión, esto ni siquiera debería considerarse una respuesta válida, ya que abre su sistema a ataques desde el exterior.
rubiii

160

La razón es viejos rubygems. Primero debe actualizar la parte del sistema utilizando una fuente que no sea 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ás listo para usar gem update.


55
Solución realmente simple que es multiplataforma y permite que RubyGems se encargue de los detalles. Agradable.
zrisher

2
este fue el que debería aceptarse, las respuestas anteriores no explican que primero debe eliminar las fuentes de SSL
Efraín

1
Gracias, este es el boleto. Si recibe un mensaje de "no en caché" al agregar o eliminar fuentes, pruébelo con o sin una barra diagonal final. Tiene que coincidir exactamente.
Timothy Lee Russell

1
He buscado a través de muchas soluciones. Este es el que funcionó a las mil maravillas. ¡Gracias! Esto debería elegirse como la verdadera solución.
Berker Yüceer

1
¡¡Gracias!! Estoy de acuerdo con otros en que esta debería ser la respuesta aceptada, ya que no da como resultado que obtenga gemas a través de HTTP simple.
Alexander

117

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

rvm osx-ssl-certs update

¡Gracias! Trabajó para mí en Mac OSX 10.8.5
Matthew Blancarte

Gracias, funcionó para mí también. Estaba tratando de instalar CocoaPods. rvm 1.22.15, OS X 10.8.5
Logan Moseley

1
Esto también se señala en el mensaje de error "... ver bit.ly/ruby-ssl".
IAmNaN

¡Gracias! ¡¡Trabajó para mi!! \ o /
Valter Júnior

55

Este problema ahora debería solucionarse. Actualice rubygems ( gem update --system), asegúrese de que openssl esté en la última versión de su sistema operativo o pruebe estos consejos, ya que todavía no funciona: http://railsapps.github.com/openssl-certificate-verify-failed.html


1
También necesitaba actualizar el paquete para que funcione (rubygems 2.0.3 + paquete 1.3.2 + cygwin openssl 1.0.1e me funciona en winxp).
fakeleft

Tuve que actualizar desde 1.3.0, ahora estoy en 1.3.4 y el https ya no arroja el error: bundler-1.3.0 / lib / bundler / vendor / net / http / persistent / ssl_reuse.rb: 70: en `conectar ': SSL_connect devuelto = 1 errno = 0 estado = SSLv3 leer el intercambio de claves del servidor B: mal ecpoint (OpenSSL :: SSL :: SSLError)
Jon Kern

3
¡No es posible actualizar rubygems si no se acepta el certificado SSL! Corriendo en círculos aquí;)
kap

50

Solución temporal (como lo alude Ownatik):

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

Esto evitará que el paquete compruebe los certificados SSL de gemas cuando intente instalarlos.

Para dispositivos * nix, 'ruta de inicio' significa ~/.gemrc. También puedes crear /etc/gemrcsi lo prefieres. Para Windows XP, 'ruta de inicio' significa c:\Documents and Settings\All Users\Application Data\gemrc. Para Windows 7,C:\ProgramData\gemrc


3
%USERPROFILE%\.gemrctambién se busca gemen Windows.
Rômulo Ceccon

1
¿Ubicación de archivo recomendada para Windows 8?
user1318135

66
Eliminar la verificación SSL es una solución temporal que abre un agujero de seguridad. Lea más aquí: github.com/rubygems/rubygems/commit/…
mrm

Esto es útil en mi caso; detrás de un firewall corporativo que restringe todos los archivos comprimidos pero los permite a través de https.
mydoghasworms

No probé esta solución, pero en mi caso también funcionó cuando agregué este contenido a ~/.gemrc::sources: - http://rubygems.org
Artur Käpp

18

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\<username>\cacert.pem"

o puedes configurar la variable en tu script de esta manera ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"

Reemplace <nombre de usuario> con su propio nombre de usuario.


3
Gracias. La solución permanente está aquí. guides.rubygems.org/ssl-certificate-update
Maheshkumar

Esta es la solución permanente correcta y evitar el uso de una fuente http no segura.
Dio Phung

15

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

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

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


1
rvm osx-ssl-certs update allfuncionó bien para mí No necesitaba hacer el paso 1.
DMH


7

Para aquellos de ustedes que tienen Ruby instalado a través de RVM y desean una solución rápida (prefiriendo no leer por solicitud de Bruno), simplemente intenten 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 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, esta no es una solución alternativa. Descargará gemas a través de SSL y fallará si existe un problema como un hombre en el medio del ataque que es mucho mejor que simplemente desactivar la seguridad.


La página a la que enlaza tiene una "solución" (primero) y luego las soluciones adecuadas. Sería mejor si tu respuesta lo dijera un poco más claramente. Sin embargo, el uso de certificados de CA (vía cacert.pemo $rvm_path/usr/ssl) es, de hecho, el camino correcto.
Bruno

1
Bruno, la solución probablemente será un poco diferente dependiendo del sabor de Unix que use la persona. Parece que leer el enlace será necesario.
danielrussia

Estaba hablando de la diferencia entre la "solución" en la página ( :ssl_verify_mode: 0que abre problemas), en oposición a cualquiera de las 3 soluciones a continuación, que son la forma correcta de solucionar este problema.
Bruno

@Bruno, he revisado mi artículo, agregue comentarios o edite la wiki si ve posibilidades de mejoras.
Daniel Kehoe

6

Esto ha sido arreglado

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

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

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

Descargue el archivo en un directorio al que luego pueda apuntar (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, gem --version debería informar la nueva versión de actualización.

Ahora puede desinstalar con seguridad rubygems-update gem:

C:\>gem uninstall rubygems-update -x

5

Instrucciones simples de copiar y pegar aquí dadas sobre el archivo .pem

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

Para la verificación del certificado falló

Si has leído las secciones anteriores, sabrás lo que esto significa (y avergonzarte si no lo has hecho).

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

C:> gema que rubygems C: /Ruby21/lib/ruby/2.1.0/rubygems.rb Ahora, ubiquemos 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:> start C: \ Ruby21 \ lib \ ruby ​​\ 2.1.0 \ rubygems Esto abrirá una ventana de Explorer dentro del directorio que indicamos.

Paso 3: copie el nuevo certificado de confianza

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

Aparecerá en la lista con otros archivos como GeoTrustGlobalCA.pem.


4

mismo problema pero con gema diferente 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'permite continuarbundle install


77
También puede usar la versión no ssl de rubygems en su archivo de gemas como una solución temporal.
fbernier

1
Lo hice y funciona. Por ahora, esa es una solución suficiente.
mrzasa

Tengo el mismo problema por aquí. Entonces, @Ownatik, ¿cómo usar la versión SSL de rubygems?
Zeck



4

Mi solución permanente para Windows:

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

  2. Cree una variable del sistema llamada " SSL_CERT_FILE ", establecida en C:\ruby\ssl_certs\GlobalSignRootCA.pem.

  3. Intenta nuevamente 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

3

Recibo 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 corro bundle installcon source 'https://rubygems.org'un Gemfile.

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

Para solucionar esto, ejecute apt-get update && apt-get upgradeUbuntu 12.04 para actualizar su OpenSSL.


3

Pude rastrear esto hasta el hecho de que los archivos binarios que rvmdescargan no funcionan bien con OpenSSL de OS X, que es viejo y ya no lo usa el sistema operativo.

La solución para mí fue forzar la compilación al instalar Ruby a través de rvm:

rvm reinstall --disable-binary 2.2

Esto funcionó para mí. Es necesario sustituir "2.2" w / la versión de rubí que está utilizando
Josh

3

Gracias a @ Alexander.Iljushkin por:

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

Después de que ese paquete todavía falló y la solución fue:

gem install bundler


2

Estaba recibiendo un error similar. Así es como resolví esto: en su directorio de ruta, busque Gemfile. Edite la fuente en el archivo de gemas a http en lugar de https y guárdelo. Esto podría instalar el paquete sin el problema del certificado SSL.


2

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

gem --version

Luego actualiza tu gema de la siguiente manera:

Descargue el archivo en un directorio al que luego pueda apuntar (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.

Instrucciones más detalladas están aquí


1

Esto funcionó para mí:

  • descargue la última gema en https://rubygems.org/pages/download
  • instalar la gema con gem install --local [path to downloaded gem file]
  • actualizar las gemas con update_rubygems
  • comprueba que estás en la última versión de gema con gem --version

1

Tuve que reinstalar openssl:

brew uninstall --force openssl
brew install openssl

1

Recientemente me enfrenté a este problema y seguí los pasos descritos aquí . Es posible que no esté señalando el 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 corrió!


1

Descarga 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 --versiondebe informar la nueva versión de actualización.

Ahora puede desinstalar con seguridad rubygems-update gem:

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

1

Para tener en cuenta, si está obteniendo gemas de una fuente en la que una autoridad de certificación interna confía en el certificado SSL (o se está conectando a una fuente externa a través de un proxy web de la empresa con inspección SSL), señale su variable env SSL_CERT_FILE a su cadena de certificados . Lo más probable es que solo requiera 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

0

Si estas usando rails-assets

Si estaba utilizando https://rails-assets.org/para administrar sus activos, no hay respuestas que lo ayuden. Incluso convertir a httpno ayudará.

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


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.