Fehlermeldung
error Error: self-signed certificate in certificate chain
Auch ausgegeben als
- error Error: self signed certificate in certificate chain
Yarn 1.x gibt „error Error: …“ aus, gefolgt von einem Stacktrace von Node.js (at TLSSocket.onConnectSecure …). Node.js 16 und älter schreiben „self signed“. Yarn 4 meldet TLS-Fehler in einem eigenen Format: „➤ YN0001: RequestError: <reason>“.
Yarn Classic (1.x) — registry request over HTTPS
Was der Fehler bedeutet
Yarn Classic konnte das Zertifikat der Registry nicht prüfen, weil die Kette bei einem selbstsignierten Root-Zertifikat endet, dem Node.js nicht vertraut. Yarn gibt den Fehler von Node.js unverändert aus, darunter einen Stacktrace. In einem Firmennetz ist das das klassische Symptom eines Proxys mit TLS-Inspektion, dessen Root-Zertifikat der Browser vertraut, Node.js aber nicht.
Warum der Fehler auftritt
Ein Proxy mit TLS-Inspektion signiert registry.yarnpkg.com neu
häufigFirmenproxys präsentieren Zertifikate, die auf ihr eigenes Root-Zertifikat zurückgehen, dem das Betriebssystem vertraut, Node.js aber nicht.
Eine private Registry, die ihr eigenes Root-Zertifikat sendet
gelegentlichInterne Registrys mit Firmenzertifikaten; dem Root-Zertifikat in der Kette muss trotzdem auf dem Client vertraut werden.
Node.js ignoriert den Trust Store des Betriebssystems
gelegentlichYarn läuft auf Node.js, und Node.js verwendet seine eingebaute Liste von Root-Zertifikaten, solange nichts anderes konfiguriert ist.
So behebst du den Fehler
- 1.
cafile von Yarn 1 setzen
yarn config set cafile lässt Yarn die Registry gegen diese PEM-Datei prüfen; wie die entsprechende Einstellung von npm ersetzt sie die Standard-Root-Zertifikate für Anfragen an die Registry.
bash # Yarn 1.x setting (stored in ~/.yarnrc) yarn config set cafile /etc/ssl/private-ca/corp-proxy-root.pem yarn config get cafile - 2.
Oder NODE_EXTRA_CA_CERTS verwenden
Fügt das Root-Zertifikat für Yarn und jedes andere Node.js-Tool in der Umgebung zur eingebauten Liste von Node.js hinzu.
bash export NODE_EXTRA_CA_CERTS=/etc/ssl/private-ca/corp-proxy-root.pem yarn install - 3.
Yarn 4: httpsCaFilePath
Aktuelles Yarn liest httpsCaFilePath aus .yarnrc.yml; Yarn 4 startet nicht, wenn es den veralteten Eintrag caFilePath findet.
yaml # Yarn 4 (Berry): .yarnrc.yml — Yarn 4 rejects the old caFilePath key httpsCaFilePath: /etc/ssl/private-ca/corp-proxy-root.pem - 4.
Vorübergehende Diagnose: strict-ssl false
Bestätigt, dass das Vertrauen das einzige Problem ist. Pakete führen Installationsskripte aus; bleibt die Prüfung abgeschaltet, öffnet das untergeschobenen Paketen die Tür. Lösche die Einstellung direkt nach dem Test.
bash # Temporary diagnostic only; revert immediately afterwards yarn config set strict-ssl false && yarn install; yarn config delete strict-ssl