Mensaje de error
error Error: unable to get local issuer certificate
También se muestra como
- YN0001: RequestError: unable to get local issuer certificate
Yarn 1.x imprime «error Error: unable to get local issuer certificate» seguido de una traza de pila de Node.js. Si el registro envía solo su certificado hoja, el texto pasa a ser «unable to verify the first certificate».
Qué significa
Yarn Classic recibió del registro una cadena de certificados (el certificado hoja y el intermedio), pero Node.js no confía en la raíz que está por encima. Yarn muestra el error de Node.js sin cambios. Normalmente el registro está bien; a este equipo le falta la raíz de la empresa o del proxy a la que lleva la cadena.
Por qué ocurre
Un registro privado firmado por una CA de la empresa
frecuenteArtifactory, Nexus o Verdaccio con certificados de una CA interna cuya raíz no conoce Node.js.
Un proxy que inspecciona TLS y envía su certificado intermedio emisor
frecuenteLos proxies que envían el certificado hoja y el intermedio, pero no su raíz, producen este código en lugar de «self-signed certificate in certificate chain».
El lockfile apunta a otro host de registro
ocasionalyarn.lock guarda las URL completas de los tarballs. Un lockfile generado con un espejo privado sigue descargando de ese host aunque cambie la configuración del registro.
Cómo solucionarlo
- 1.
Configurar cafile en Yarn 1
Indica a Yarn la raíz de la empresa (o un bundle que incluya las raíces públicas, ya que cafile sustituye las predeterminadas en las solicitudes al registro).
bash yarn config set cafile /etc/ssl/private-ca/corp-root-ca.pem - 2.
O usar NODE_EXTRA_CA_CERTS
Añade la raíz a la lista integrada de Node.js para Yarn y para cualquier otro proceso de Node.js que tenga definida 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 imprime el fallo como «YN0001: RequestError: unable to get local issuer certificate» y toma el archivo de CA de la opción httpsCaFilePath de .yarnrc.yml.
yaml # Yarn 4: .yarnrc.yml httpsCaFilePath: /etc/ssl/private-ca/corp-root-ca.pem - 4.
Comprobar qué hosts usa el lockfile
Si las URL resueltas apuntan a un espejo interno, hay que corregir el certificado de ese espejo o tu almacén de confianza, no la configuración del registro.
bash # Which hosts does the lockfile download from? grep -oE 'resolved "https://[^/]+' yarn.lock | sort | uniq -c