Saltar al contenido
ecdsa.com
BundlerGestores de paquetes

Mensaje de error

Could not verify the SSL certificate for https://gems.example.com/.

También se muestra como

  • Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for https://gems.example.com/.

Bundler imprime «Retrying fetcher due to error (n/4): Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for <source>.» en cada intento, seguido de «There is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn't have the CA certificates needed for verification.». La URL de la fuente es la de tu Gemfile.

Bundler — Bundler::Fetcher::CertificateFailureError while fetching a gem source

Qué significa

Bundler no pudo verificar el certificado TLS de una fuente de gemas del Gemfile, volvió a intentarlo y se rindió. Envuelve el error de verificación de OpenSSL en Bundler::Fetcher::CertificateFailureError y añade una pista de que al sistema pueden faltarle certificados de CA. Como en Ruby en general, las CA de confianza son las del bundle de OpenSSL que usa este Ruby, salvo que el ajuste ssl_ca_cert de Bundler indique otra cosa.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Establecer ssl_ca_cert de Bundler

    bundle config set ssl_ca_cert indica a Bundler un archivo de CA para sus descargas. En nuestra prueba, esto resolvió el error de inmediato.

    bash
    # Trust a CA for Bundler (stored in .bundle/config; --global for ~/.bundle/config)
    bundle config set --local ssl_ca_cert /etc/ssl/private-ca/corp-root-ca.pem
    bundle install
  2. 2.

    O establecer SSL_CERT_FILE

    La variable de entorno de OpenSSL se aplica por igual a Bundler, a RubyGems y a la aplicación; haz que apunte a un bundle que también contenga las raíces públicas.

    bash
    # Or for the whole process (Bundler, RubyGems and Net::HTTP)
    SSL_CERT_FILE=/etc/ssl/private-ca/corp-ca-bundle.pem bundle install
  3. 3.

    Instalar la CA en el almacén que lee Ruby

    Consulta OpenSSL::X509::DEFAULT_CERT_FILE para ver qué archivo de bundle es y añade allí el certificado raíz (en Debian y Ubuntu, mediante update-ca-certificates).

    bash
    sudo cp corp-root-ca.pem /usr/local/share/ca-certificates/corp-root-ca.crt && sudo update-ca-certificates
    ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE'   # the bundle this Ruby reads
  4. 4.

    RubyGems: :ssl_ca_cert en .gemrc

    gem install tiene su propio ajuste con la misma finalidad.

    yaml
    # ~/.gemrc — the same CA for "gem install"
    :ssl_ca_cert: /etc/ssl/private-ca/corp-root-ca.pem

Errores relacionados

Explorar toda la base de datos de errores de firma