Aller au contenu
ecdsa.com
Ruby openssl (Net::HTTP, Faraday, RubyGems)Ruby

Message d’erreur

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

Également affiché sous la forme

  • 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)

Le message complet est « SSL_connect returned=1 errno=0 peeraddr=<ip>:<port> state=error: certificate verify failed (self-signed certificate in certificate chain) ». Les Ruby fondés sur OpenSSL 1.1.1 affichent « self signed » sans trait d’union.

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

Ce que cela signifie

La chaîne du serveur se termine par un certificat racine auto-signé auquel l’OpenSSL de Ruby ne fait pas confiance. Avec des hôtes publics comme rubygems.org, cela signifie qu’un proxy d’inspection TLS ou un antivirus re-signe la connexion ; avec des hôtes internes, la racine de l’entreprise manque dans le magasin qu’utilise Ruby.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Identifier la racine

    Affichez la chaîne d’un hôte public ; une racine qui porte le nom de votre entreprise ou d’un éditeur de sécurité est celle à laquelle faire confiance.

    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.

    Faire pointer SSL_CERT_FILE vers un fichier d’AC combiné

    Combinez les racines publiques avec la racine du proxy, car SSL_CERT_FILE remplace le fichier d’AC par défaut.

    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.

    Installer la racine pour tout le système (Linux)

    Les Ruby liés à l’OpenSSL du système la prennent en compte après update-ca-certificates.

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

Erreurs associées

Parcourir toute la base de données des erreurs de signature