VPN, Proxy und Filter
Firmenproxy-Zertifikate legen Terminal-Tools auf dem Mac lahm
Manche Firmennetzwerke prüfen HTTPS-Datenverkehr. Der Proxy signiert den Datenverkehr dann mit einem Root-Zertifikat der Firma, und Tools, die ihm nicht vertrauen, brechen ab.
Symptome
- npm oder Node meldet „self-signed certificate in certificate chain“ oder „unable to get local issuer certificate“.
- Git meldet „SSL certificate problem“ bei HTTPS-Remotes.
- Safari öffnet die Website, curl oder Python aber nicht.
- Die Fehler treten nur im Firmennetzwerk oder im VPN auf.
Mögliche Ursachen
- TLS-Inspektion. Der Proxy ersetzt das Zertifikat der Website durch eines, das ein Root-Zertifikat der Firma signiert.
- Getrennte Vertrauensspeicher. Safari nutzt den macOS-Schlüsselbund. Viele Befehlszeilentools nutzen ihre eigene Liste vertrauenswürdiger Zertifikate.
- Eine fehlende Proxy-Einstellung. Tools im Terminal nutzen nicht immer den System-Proxy. Sie brauchen Proxy-Variablen oder eine eigene Einstellung.
So prüfst du es
Zeige die Zertifikatskette an, die der Server sendet. Sieh dir den Aussteller des obersten Zertifikats an.
openssl s_client -connect registry.npmjs.org:443 -servername registry.npmjs.org -showcerts </dev/nullZeige den TLS-Handshake mit curl an.
curl -v https://registry.npmjs.org/ -o /dev/nullSuche das Root-Zertifikat der Firma in der Schlüsselbundverwaltung. Suche im Schlüsselbund „System“ nach dem Namen deiner Firma.
Zeige die Proxy-Variablen in deiner Shell an.
env | grep -i proxy
So behebst du es
Lass dir das Root-Zertifikat der Firma von deinem IT-Team als PEM-Datei geben. Vertraue keinem Zertifikat aus unbekannter Quelle.
Gib die Datei für Node.js-Tools in
NODE_EXTRA_CA_CERTSan. Starte das Tool danach neu.export NODE_EXTRA_CA_CERTS=~/certs/company-root.pemAb Node.js 22.19 oder 24.6 kannst du die Zertifikate nutzen, denen der Schlüsselbund vertraut.
export NODE_USE_SYSTEM_CA=1Lege für npm die Zertifikatsdatei fest.
npm config set cafile ~/certs/company-root.pemLege für Git die Zertifikatsdatei fest.
git config --global http.sslCAInfo ~/certs/company-root.pemGib die Datei für curl mit
--cacertan.curl --cacert ~/certs/company-root.pem https://example.comRichte den Firmenproxy für Terminal-Tools ein, falls dein IT-Team einen nutzt.
export https_proxy=http://proxy.example.com:8080Schalte die Zertifikatsprüfung nicht ab, etwa mit
strict-ssloderhttp.sslVerify. Das macht die Verbindung unsicher.
Mit Kilobat
Die Verbindungsprüfung von Kilobat meldet einen TLS-Fehler als eigene Schicht. Sie sagt dir auch, ob der System-Proxy funktioniert, wo der direkte Weg scheitert.
kilobat why https://registry.npmjs.org/Füge
--apphinzu, um die Proxy-Variablen aus der Umgebung dieser App zu nutzen.kilobat why https://registry.npmjs.org/ --app process:node
Fragen
Warum funktioniert Safari, wenn npm scheitert?
Safari vertraut den Zertifikaten im macOS-Schlüsselbund. npm nutzt die Zertifikate, die Node.js mitbringt – es sei denn, du fügst das Firmenzertifikat hinzu.
Ist es sicher, strict-ssl auf false zu setzen?
Nein. Damit entfallen alle Zertifikatsprüfungen für die Registry. Füge stattdessen das Root-Zertifikat der Firma hinzu.
Quellen
- Node.js: Command-line API, NODE_EXTRA_CA_CERTS und --use-system-ca
- npm Docs: config (cafile, proxy, https-proxy, strict-ssl)
- git-config(1), http.sslCAInfo und http.proxy, Manpage aus macOS 27.2 (Git 2.56)
- Apple Support: Vertrauenseinstellungen eines Zertifikats in der Schlüsselbundverwaltung ändern
- curl(1), Manpage aus macOS 27.2
Quellen geprüft am 29. Oktober 2026. Die Manpages sind die mit macOS installierten; öffne eine mit man <name> im Terminal.