Estoy usando Ruby 1.9.3p0 en Mac OS 10.6.8 (instalado usando rvm). Cuando intento crear una nueva aplicación Rails usando un plantilla de aplicación alojada en GitHub, con este (por ejemplo):

$ rails nueva myapp -m https://github.com/RailsApps/rails3-application-templates/raw/master/rails3-mongoid-devise-template.rb -T-O 

Me sale este mensaje de error:

/Usuarios/me/.rvm/rubíes/ruby 1.9.3-p0/lib/ruby/1.9.1/net/http.rb:799:en `connect': SSL_connect 
regresó=1 errno=0 estado=SSLv3 leer certificado de servidor B: certificado de comprobar error 
(OpenSSL::SSL::SSLError) 

Entiendo el lenguaje Ruby intérprete es el uso de OpenSSL para conectarse a GitHub para solicitar la aplicación del archivo de plantilla. GitHub requiere que todas las conexiones se realizarán utilizando SSL. Error en la conexión porque OpenSSL no pudo comprobar el certificado del servidor.

Yo era capaz de resolver el problema mediante la descarga de un certificados de archivo:

$ cd /opt/local/etc/openssl 
$ sudo curl -O http://curl.haxx.se/ca/cacert.pem 
$ sudo mv cacert.pem cert.pem 

No tuve ningún problema con Ruby 1.9.2. ¿Por qué he de obtener el «certificado de comprobar error» problema de Ruby 1.9.3? Es esta una de Ruby 1.9.3 error? Es específico para Mac OS 10.6.8? Es mi solución es la manera correcta de resolver esto?

  • Tuve este problema hace unos meses con otra joya que es el uso de net/http. Resuelto de esta manera: Koala.http_service.ca_path = «/etc/ssl/certs/» Así que tienes que añadir a tu CA-Ruta de acceso en su caso también.
  • Daniel – obteniendo el mismo error de hacer la misma cosa! ¿Cómo lo resuelven? tratado de las 3 líneas más arriba – no hay alegría.
  • Hola, Bob – lo Siento, a ver que error es todavía morder. No tengo una resolución para ofrecer como todo trabaja bien para mí después de actualizar mis certificados como se describió anteriormente. Es específico del sistema, por lo que es bastante difícil de diagnosticar. Podría ser un rvm problema.
  • Echa un vistazo a mi respuesta aquí stackoverflow.com/a/16983443/11792
InformationsquelleAutor Daniel Kehoe | 2011-11-12

7 Comentarios

  1. 21

    Hay un montón de piezas móviles que intervienen en la respuesta correcta. Depende de tu sistema operativo, versión de Ruby, OpenSSL versión, Rubygems versión. Terminé de escribir un artículo después de la investigación de la misma. Mi artículo explica las razones para el error, ofrece los pasos para su posterior diagnóstico, muestra varias soluciones, y sugiere posibles soluciones. Esto será útil:

    OpenSSL Errores y Rieles – Certificate Verify Failed

    También hay enlaces a los correspondientes compromete y problemas en GitHub.

    • Echa un vistazo a mi respuesta aquí: stackoverflow.com/a/16983443/11792
    • Si estás en windows, haga clic a través de la solución para Windows y no se olvide de establecer la SSL_CERT variable de entorno y cerrar y volver a abrir el terminal. Tan bueno para finalmente obtener una resolución!
  2. 13

    Para mí esto ocurrió en OS X con homebrew después de la actualización a la última RVM (rvm 1.20.12) y, a continuación, instalar ruby 1.9.3-p429. He podido reproducir el problema, simplemente mediante la ejecución de:

    $ rvm use ruby-1.9.3-p429
    $ irb
    1.9.3p429 :001 > require 'open-uri'; open 'https://google.com'
    OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:800:in `connect'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:800:in `block in connect'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/timeout.rb:55:in `timeout'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/timeout.rb:100:in `timeout'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:800:in `connect'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:756:in `do_start'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:745:in `start'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:306:in `open_http'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:775:in `buffer_open'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:203:in `block in open_loop'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:201:in `catch'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:201:in `open_loop'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:146:in `open_uri'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:677:in `open'
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:33:in `open'
    from (irb):1
    from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/bin/irb:16:in `<main>'1.9.3p429 :002 > 

    La solución fue similar a la de la pregunta, pero el camino era equivocado. Ejecutando esta arreglado:

    curl https://curl.haxx.se/ca/cacert.pem -o /usr/local/etc/openssl/cert.pem

    La pista a la ruta correcta era que cuando estaba instalando ruby 1.9.3-p429 a través de RVM este mostró en la salida:

    Certificates in '/usr/local/etc/openssl/cert.pem' already are up to date.

    Tuve la /usr/local/etc/openssl camino, pero no cert.pem archivo en ese directorio, así que no estoy seguro de por qué RVM afirmó que los certificados fueron hasta la fecha. Sería interesante saber por qué tenía que hacer esto en primer lugar, pero no tengo tiempo para investigar ahora.

    • curl http://curl.haxx.se/ca/cacert.pem -o /usr/local/etc/openssl/cert.pem exactamente lo que yo necesitaba. gracias
    • Nota: este fue realmente un error con RVM: github.com/wayneeseguin/rvm/issues/1920. Se ha solucionado ya.
    • Se agradece un montón! Estoy usando Ruby 1.8.7-p370 y tuvo que ejecutar esto: curl http://curl.haxx.se/ca/cacert.pem -o /etc/ssl/certs/ca-certificates.crt para resolver el problema. Su punta es genial!!!
    • Cert camino se trasladó a https: https://curl.haxx.se/ca/cacert.pem
  3. 11

    Tuve el mismo problema, después de haber compilado mi RVM Ruby en contra de una RVM instalación de OpenSSL. He movido el archivo cacerts.pem archivo descargado por el cartel original en ~/.rvm/usr/ssl/cert.pem para hacer que el problema desaparezca.

    • Gracias hombre, he intentado todos los chanchullos, pero la punta de su solucionado!
    • Esta casi trabajó para mí, pero tuve que poner en el archivo cacerts.pem archivo en /usr/local/etc/openssl/cert.pem. Aquí los detalles de mi problema y de la solución: stackoverflow.com/a/16741712/62
    • Yo no tenía un cert.pem, así que he creado uno en ~/.rvm/usr/ssl y copia y cert.pem de curl.haxx.se. Por desgracia, todavía estoy recibiendo el mismo Faraday asunto: Certificado de Comprobar Error. Estoy usando Ruby 1.9.3 y koala versión 1.6.0 (no sé si esto es relevante, aunque).
  4. 2

    Yo estaba teniendo el mismo problema.

    La forma en que finalmente me fijo fue por actualizar mi versión de OpenSSL que me había instalado a través de MacPorts. Yo estaba corriendo una versión de OpenSSL desde 2009, así que he actualizado mi MacPorts de instalación, a continuación, actualizar mi OpenSSL instalación a través de la ports interfaz de línea de comandos y el error desapareció.

    Debe haber cierta integración entre Ruby/Rails y OpenSSL en Mac basado instalaciones que decir. En mi caso yo estaba teniendo problemas para conseguir el el inicio de Sesión con Facebook a funcionar correctamente cuando Facebook fue el envío de la oAuth/token de inicio de Sesión de nuevo a mi aplicación, Idear & OmniAuth debe tener necesitaba un certificado SSL válido para graph.facebook.com que no estaba en mi antigua versión de OpenSSL.

  5. 1

    Openssl certificación directorio es /usr/lib/ssl/ en Debian. Así, después de tres líneas era suficiente para mí,

    $ cd /usr/lib/ssl/
    $ sudo curl -O http://curl.haxx.se/ca/cacert.pem
    $ sudo mv cacert.pem cert.pem
  6. 0

    Que posiblemente podría ser debido a cómo la construyó 1.9.2 y 1.9.3 — tal vez sea la herramienta que se utiliza para construir, cada uno configurado las cosas de manera ligeramente diferente. O tal vez el uso de diferentes versiones de OpenSSL.

    Aquí es el único potencialmente relevantes cambio yo podría irregular a la Red:HTTP entre 1.9.2 y 1.9.3

     require 'net/protocol'
    -autoload :OpenSSL, 'openssl'
    require 'uri'
    +autoload :OpenSSL, 'openssl'

    (si desea ver la lista de cambios…)

    git clone https://github.com/ruby/ruby.git 
    cd ruby 
    git diff origen/ruby_1_9_2 origen/ruby_1_9_3 -- http.rb 
    
    • He utilizado rvm para instalar Ruby 1.9.2 y 1.9.3.
  7. 0

    Tuve un problema similar pero no sobre Rieles, pero sólo en Ruby on de Windows. Lo resolvió mediante el uso de la cacert.pem certificado y la configuración de la ubicación del certificado a la variable de entorno «SSL_CERT_FILE»

    Respuesta detallada aquí: https://stackoverflow.com/a/35429863/4747587

Dejar respuesta

Please enter your comment!
Please enter your name here