Message d’erreur
error Error: unable to get local issuer certificate
Également affiché sous la forme
- YN0001: RequestError: unable to get local issuer certificate
Yarn 1.x affiche « error Error: unable to get local issuer certificate », suivi d’une trace de pile Node.js. Si le registre n’envoie que son certificat feuille, le texte est plutôt « unable to verify the first certificate ».
Ce que cela signifie
Yarn Classic a reçu du registre une chaîne de certificats (feuille et intermédiaire), mais Node.js ne fait pas confiance à la racine située au-dessus. Yarn remonte l’erreur de Node.js sans la modifier. Le registre fonctionne généralement correctement : c’est sur cette machine que manque la racine d’entreprise ou de proxy à laquelle mène la chaîne.
Pourquoi cela se produit
Un registre privé signé par une AC d’entreprise
fréquenteArtifactory, Nexus ou Verdaccio avec des certificats émis par une AC interne dont Node.js ne connaît pas la racine.
Un proxy d’inspection TLS qui envoie son certificat intermédiaire émetteur
fréquenteLes proxys qui envoient le certificat feuille et le certificat intermédiaire, mais pas leur racine, produisent ce code plutôt que « self-signed certificate in certificate chain ».
Le fichier de verrouillage pointe vers un autre hôte de registre
occasionnelleyarn.lock enregistre les URL complètes des archives tarball. Un fichier de verrouillage créé avec un miroir privé continue de télécharger depuis cet hôte, même lorsque le paramètre de registre change.
Comment corriger l’erreur
- 1.
Définir le cafile de Yarn 1
Indiquez à Yarn la racine de l’entreprise (ou un fichier qui contient aussi les racines publiques, car cafile remplace les racines par défaut pour les requêtes vers le registre).
bash yarn config set cafile /etc/ssl/private-ca/corp-root-ca.pem - 2.
Ou utiliser NODE_EXTRA_CA_CERTS
Ajoute la racine à la liste intégrée de Node.js pour Yarn et pour tout autre processus Node.js lancé avec la variable.
bash export NODE_EXTRA_CA_CERTS=/etc/ssl/private-ca/corp-root-ca.pem yarn install --frozen-lockfile - 3.
Yarn 4 : httpsCaFilePath
Yarn 4 affiche l’échec sous la forme « YN0001: RequestError: unable to get local issuer certificate » et lit le fichier d’AC indiqué par httpsCaFilePath dans .yarnrc.yml.
yaml # Yarn 4: .yarnrc.yml httpsCaFilePath: /etc/ssl/private-ca/corp-root-ca.pem - 4.
Vérifier quels hôtes utilise le fichier de verrouillage
Si les URL résolues pointent vers un miroir interne, la correction concerne le certificat de ce miroir ou votre magasin de confiance, et non le paramètre de registre.
bash # Which hosts does the lockfile download from? grep -oE 'resolved "https://[^/]+' yarn.lock | sort | uniq -c