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?

mrzasa
fuente
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

Será
fuente
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:

StuR
fuente
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.

Alexander Iljushkin
fuente
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
chaserx
fuente
¡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

fbernier
fuente
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

asfallows
fuente
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.

Peter
fuente
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 !

Alan H.
fuente
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.

danielrussia
fuente
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
Roffers
fuente
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.

geniushkg
fuente
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

Ludwig
fuente
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

La solución más simple:

rvm pkg install openssl
rvm reinstall all --force

Voila!

usuario2886774
fuente
2
¿Qué le hace esto realmente a mi sistema?
Bradley Flood
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
Dio Phung
fuente
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.

Jo Liss
fuente
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
Schrockwell
fuente
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

Sebastian Axe
fuente
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.

ecksor5
fuente
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í

KBIIX
fuente
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
Guy Chauliac
fuente
1

Tuve que reinstalar openssl:

brew uninstall --force openssl
brew install openssl
gabeodess
fuente
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ó!

jshaf
fuente
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
Aswathy
fuente
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
mostlikelee
fuente
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 .

Anwar
fuente
0

Lo único que funcionó para mí en el sistema de Windows heredado y la versión 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
Aleksandar Pavić
fuente