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.
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
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/nullAffichez la négociation TLS avec curl.
curl -v https://registry.npmjs.org/ -o /dev/nullTrouvez le certificat racine de l’entreprise dans Trousseaux d’accès. Cherchez le nom de votre entreprise dans le trousseau Système.
Affichez les variables de proxy dans votre shell.
env | grep -i proxy
Comment corriger
Demandez le certificat racine de l’entreprise à votre service informatique, sous forme de fichier PEM. Ne faites pas confiance à un certificat d’origine inconnue.
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.pemAvec Node.js 22.19, 24.6 ou ultérieur, vous pouvez utiliser les certificats approuvés par le trousseau.
export NODE_USE_SYSTEM_CA=1Pour npm, définissez le fichier de certificat.
npm config set cafile ~/certs/company-root.pemPour Git, définissez le fichier de certificat.
git config --global http.sslCAInfo ~/certs/company-root.pemPour curl, indiquez le fichier avec
--cacert.curl --cacert ~/certs/company-root.pem https://example.comDé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:8080Ne désactivez pas la vérification des certificats, comme
strict-sslouhttp.sslVerify. La connexion ne serait plus sûre.
Avec Kilobat
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/Ajoutez
--apppour 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
- Node.js : Command-line API, NODE_EXTRA_CA_CERTS et --use-system-ca
- npm Docs : config (cafile, proxy, https-proxy, strict-ssl)
- git-config(1), http.sslCAInfo et http.proxy, page man installée avec macOS 27.2 (Git 2.56)
- Assistance Apple : Modifier les réglages de confiance d’un certificat dans Trousseaux d’accès
- curl(1), page man installée avec macOS 27.2
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.