Saltar al contenido
ecdsa.com
Ruby openssl (Net::HTTP, Faraday, RubyGems)Ruby

Mensaje de error

state=error: certificate verify failed (self-signed certificate in certificate chain)

También se muestra como

  • OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 peeraddr=127.0.0.1:8443 state=error: certificate verify failed (self-signed certificate in certificate chain)

El mensaje completo es «SSL_connect returned=1 errno=0 peeraddr=<ip>:<port> state=error: certificate verify failed (self-signed certificate in certificate chain)». Las versiones de Ruby basadas en OpenSSL 1.1.1 imprimen «self signed» sin el guion.

Ruby openssl (Net::HTTP, Faraday, RubyGems) — OpenSSL::SSL::SSLError from SSL_connect

Qué significa

La cadena del servidor termina en un certificado raíz autofirmado en el que no confía el OpenSSL de Ruby. Con hosts públicos como rubygems.org, significa que un proxy que inspecciona TLS o un antivirus está volviendo a firmar la conexión; con hosts internos, falta la raíz de la empresa en el almacén que usa Ruby.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Identificar la raíz

    Imprime la cadena de un host público; la raíz que lleva el nombre de tu empresa o de un proveedor de seguridad es en la que hay que confiar.

    bash
    openssl s_client -connect rubygems.org:443 -servername rubygems.org -showcerts </dev/null 2>/dev/null \
      | grep -E '^ *[0-9]+ s:|^ *i:'
  2. 2.

    Apuntar SSL_CERT_FILE a un bundle combinado

    Combina las raíces públicas con la raíz del proxy, porque SSL_CERT_FILE sustituye el bundle predeterminado.

    bash
    # Public roots + the proxy root in one bundle
    cat /etc/ssl/certs/ca-certificates.crt corp-proxy-root.pem > ~/.config/corp-ca-bundle.pem
    export SSL_CERT_FILE=~/.config/corp-ca-bundle.pem
  3. 3.

    Instalar la raíz en todo el sistema (Linux)

    Las instalaciones de Ruby enlazadas con el OpenSSL del sistema incorporan el certificado raíz después de update-ca-certificates.

    bash
    sudo cp corp-proxy-root.pem /usr/local/share/ca-certificates/corp-proxy-root.crt && sudo update-ca-certificates

Errores relacionados

Explorar toda la base de datos de errores de firma