VPN, proxy et filtres

Les certificats de proxy d’entreprise bloquent les outils de Terminal sur un Mac

Certains réseaux d’entreprise inspectent le trafic HTTPS. Le proxy signe alors le trafic avec un certificat racine de l’entreprise, et les outils qui ne lui font pas confiance s’arrêtent.

S’applique à : toutes les versions actuelles de macOS. NODE_USE_SYSTEM_CA de Node.js nécessite Node.js 22.19, 24.6 ou ultérieur.Vérifié le 29 octobre 2026

Symptômes

  • npm ou Node affiche « self-signed certificate in certificate chain » ou « unable to get local issuer certificate ».
  • Git affiche « SSL certificate problem » pour les dépôts distants HTTPS.
  • Safari ouvre le site, mais pas curl ni Python.
  • Les erreurs ne se produisent que sur le réseau ou le VPN de l’entreprise.

Causes probables

  • Inspection TLS. Le proxy remplace le certificat du site par un certificat signé par un certificat racine de l’entreprise.
  • Des magasins de confiance séparés. Safari utilise le trousseau de macOS. Beaucoup d’outils en ligne de commande utilisent leur propre liste de certificats de confiance.
  • Un réglage de proxy manquant. Les outils de Terminal n’utilisent pas toujours le proxy du système. Ils ont besoin de variables de proxy ou de leur propre réglage.

Comment vérifier

  1. Affichez la chaîne de certificats envoyée par le serveur. Regardez l’émetteur du premier certificat.

    openssl s_client -connect registry.npmjs.org:443 -servername registry.npmjs.org -showcerts </dev/null
  2. Affichez la négociation TLS avec curl.

    curl -v https://registry.npmjs.org/ -o /dev/null
  3. Trouvez le certificat racine de l’entreprise dans Trousseaux d’accès. Cherchez le nom de votre entreprise dans le trousseau Système.

  4. Affichez les variables de proxy dans votre shell.

    env | grep -i proxy

Comment corriger

  1. Demandez le certificat racine de l’entreprise à votre service informatique, sous forme de fichier PEM. Ne faites pas confiance à un certificat d’origine inconnue.

  2. Pour les outils Node.js, indiquez le fichier dans NODE_EXTRA_CA_CERTS. Relancez l’outil après l’avoir défini.

    export NODE_EXTRA_CA_CERTS=~/certs/company-root.pem
  3. Avec Node.js 22.19, 24.6 ou ultérieur, vous pouvez utiliser les certificats approuvés par le trousseau.

    export NODE_USE_SYSTEM_CA=1
  4. Pour npm, définissez le fichier de certificat.

    npm config set cafile ~/certs/company-root.pem
  5. Pour Git, définissez le fichier de certificat.

    git config --global http.sslCAInfo ~/certs/company-root.pem
  6. Pour curl, indiquez le fichier avec --cacert.

    curl --cacert ~/certs/company-root.pem https://example.com
  7. Définissez le proxy de l’entreprise pour les outils de Terminal si votre service informatique en utilise un.

    export https_proxy=http://proxy.example.com:8080
  8. Ne désactivez pas la vérification des certificats, comme strict-ssl ou http.sslVerify. La connexion ne serait plus sûre.

Avec Kilobat

  1. La vérification de connexion de Kilobat signale un échec TLS comme une couche à part. Elle indique aussi si le proxy du système fonctionne là où la connexion directe échoue.

    kilobat why https://registry.npmjs.org/
  2. Ajoutez --app pour utiliser les variables de proxy de l’environnement de cette app.

    kilobat why https://registry.npmjs.org/ --app process:node

Questions

Pourquoi Safari fonctionne-t-il alors que npm échoue ?

Safari fait confiance aux certificats du trousseau de macOS. npm utilise les certificats fournis avec Node.js, sauf si vous ajoutez le certificat de l’entreprise.

Peut-on régler strict-ssl sur false sans risque ?

Non. Cela désactive toute vérification des certificats pour le registre. Ajoutez plutôt le certificat racine de l’entreprise.

Sources

Sources vérifiées le 29 octobre 2026. Les pages man sont celles installées avec macOS ; ouvrez-en une avec man <name> dans Terminal.