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.

Gilt für: alle aktuellen macOS-Versionen. NODE_USE_SYSTEM_CA in Node.js erfordert Node.js 22.19, 24.6 oder neuer.Geprüft: 29. Oktober 2026

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

  1. 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/null
  2. Zeige den TLS-Handshake mit curl an.

    curl -v https://registry.npmjs.org/ -o /dev/null
  3. Suche das Root-Zertifikat der Firma in der Schlüsselbundverwaltung. Suche im Schlüsselbund „System“ nach dem Namen deiner Firma.

  4. Zeige die Proxy-Variablen in deiner Shell an.

    env | grep -i proxy

So behebst du es

  1. Lass dir das Root-Zertifikat der Firma von deinem IT-Team als PEM-Datei geben. Vertraue keinem Zertifikat aus unbekannter Quelle.

  2. Gib die Datei für Node.js-Tools in NODE_EXTRA_CA_CERTS an. Starte das Tool danach neu.

    export NODE_EXTRA_CA_CERTS=~/certs/company-root.pem
  3. Ab Node.js 22.19 oder 24.6 kannst du die Zertifikate nutzen, denen der Schlüsselbund vertraut.

    export NODE_USE_SYSTEM_CA=1
  4. Lege für npm die Zertifikatsdatei fest.

    npm config set cafile ~/certs/company-root.pem
  5. Lege für Git die Zertifikatsdatei fest.

    git config --global http.sslCAInfo ~/certs/company-root.pem
  6. Gib die Datei für curl mit --cacert an.

    curl --cacert ~/certs/company-root.pem https://example.com
  7. Richte den Firmenproxy für Terminal-Tools ein, falls dein IT-Team einen nutzt.

    export https_proxy=http://proxy.example.com:8080
  8. Schalte die Zertifikatsprüfung nicht ab, etwa mit strict-ssl oder http.sslVerify. Das macht die Verbindung unsicher.

Mit Kilobat

  1. 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/
  2. Füge --app hinzu, 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

Quellen geprüft am 29. Oktober 2026. Die Manpages sind die mit macOS installierten; öffne eine mit man <name> im Terminal.