Message d’erreur
error Error: self-signed certificate in certificate chain
Également affiché sous la forme
- error Error: self signed certificate in certificate chain
Yarn 1.x affiche « error Error: … », suivi d’une trace de pile Node.js (at TLSSocket.onConnectSecure …). Node.js 16 et les versions antérieures écrivent « self signed ». Yarn 4 signale les échecs TLS dans son propre format : « ➤ YN0001: RequestError: <reason> ».
Yarn Classic (1.x) — registry request over HTTPS
Ce que cela signifie
Yarn Classic n’a pas pu vérifier le certificat du registre, car la chaîne se termine par une racine auto-signée à laquelle Node.js ne fait pas confiance. Yarn affiche l’erreur de Node.js telle quelle, suivie d’une trace de pile. Sur un réseau d’entreprise, c’est le symptôme classique d’un proxy d’inspection TLS dont la racine est approuvée par le navigateur, mais pas par Node.js.
Pourquoi cela se produit
Un proxy d’inspection TLS re-signe registry.yarnpkg.com
fréquenteLes proxys d’entreprise présentent des certificats issus de leur propre racine, approuvée par le système d’exploitation, mais pas par Node.js.
Un registre privé qui envoie sa propre racine
occasionnelleDes registres internes avec des certificats d’entreprise ; la racine présente dans la chaîne doit malgré tout être approuvée sur le client.
Node.js ignore le magasin de confiance du système d’exploitation
occasionnelleYarn s’exécute sur Node.js, qui utilise sa liste de racines intégrée, sauf configuration contraire.
Comment corriger l’erreur
- 1.
Définir le cafile de Yarn 1
yarn config set cafile amène Yarn à vérifier le registre à l’aide de ce fichier PEM ; comme le réglage équivalent de npm, il remplace les racines par défaut pour les requêtes vers le registre.
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.
Ou utiliser NODE_EXTRA_CA_CERTS
Ajoute la racine à la liste intégrée de Node.js pour Yarn et pour tous les autres outils Node.js de l’environnement.
bash export NODE_EXTRA_CA_CERTS=/etc/ssl/private-ca/corp-proxy-root.pem yarn install - 3.
Yarn 4 : httpsCaFilePath
Les versions modernes de Yarn lisent httpsCaFilePath dans .yarnrc.yml ; Yarn 4 refuse de démarrer lorsqu’il trouve l’ancienne clé caFilePath.
yaml # Yarn 4 (Berry): .yarnrc.yml — Yarn 4 rejects the old caFilePath key httpsCaFilePath: /etc/ssl/private-ca/corp-proxy-root.pem - 4.
Diagnostic temporaire : strict-ssl false
Confirme que la confiance est le seul problème. Les paquets exécutent des scripts d’installation : laisser la vérification désactivée ouvre la porte à des paquets substitués. Supprimez le réglage juste après le test.
bash # Temporary diagnostic only; revert immediately afterwards yarn config set strict-ssl false && yarn install; yarn config delete strict-ssl