Mensaje de error
Error: ERR_PNPM_RESOLVING_NPM_RESOLVER_NETWORK_ERROR
También se muestra como
- Error: ERR_PNPM_PACKAGE_MANAGER_ADD_RESOLVE_LATEST
El código de la primera línea depende del comando: ERR_PNPM_RESOLVING_NPM_RESOLVER_NETWORK_ERROR para pnpm install y ERR_PNPM_PACKAGE_MANAGER_ADD_RESOLVE_LATEST para pnpm add. La cadena de causas que aparece debajo dice «Failed to fetch metadata from <url>: error sending request: client error (Connect): invalid peer certificate: UnknownIssuer» y se parte en líneas de 80 columnas. pnpm 10 y anteriores se ejecutan sobre Node.js y, en su lugar, informan de códigos de Node.js como SELF_SIGNED_CERT_IN_CHAIN o UNABLE_TO_GET_ISSUER_CERT_LOCALLY.
pnpm 12 (native binary, rustls) — registry request over HTTPS fails with "invalid peer certificate: UnknownIssuer"
Qué significa
pnpm 12 no pudo obtener los metadatos de los paquetes del registro, y la cadena de causas que imprime termina en «invalid peer certificate: UnknownIssuer»: un fallo de verificación TLS. pnpm 12 es un binario nativo cuyo cliente HTTP verifica los certificados con rustls, y «UnknownIssuer» es el único código que usa rustls para cualquier fallo al construir la cadena: CA privada desconocida, raíz de un proxy, certificado intermedio que falta o certificado autofirmado.
Por qué ocurre
Mirar primero la última línea: el código también abarca simples errores de red
frecuenteERR_PNPM_RESOLVING_NPM_RESOLVER_NETWORK_ERROR se usa también para fallos de DNS, de conexión y de proxy. Solo cuando la cadena de causas termina en «invalid peer certificate» se trata de un problema de certificados.
Un registro privado con un certificado de la empresa
frecuenteRegistros internos firmados por una CA de la empresa que no está en el conjunto de CA de confianza de pnpm.
Un proxy que inspecciona TLS
frecuenteEn las redes de empresa, la raíz del proxy vuelve a firmar registry.npmjs.org.
El registro usa un certificado autofirmado o envía solo el certificado hoja
ocasionalrustls no distingue estos casos: un certificado autofirmado y un certificado intermedio que falta también acaban como UnknownIssuer.
Cómo solucionarlo
- 1.
Definir cafile en .npmrc
pnpm lee archivos de configuración al estilo de npm; cafile (o un valor ca en línea) añade la CA para las solicitudes al registro.
ini ; .npmrc (project or ~/.npmrc) — read by pnpm as well as npm cafile=/etc/ssl/private-ca/corp-root-ca.pem - 2.
Instalar la raíz en el almacén del sistema operativo
En nuestra prueba, pnpm 12 aceptó una raíz añadida con update-ca-certificates, así que las raíces que despliega el departamento de TI funcionan sin más configuración.
bash # pnpm 12 also trusts the operating system's store sudo cp corp-root-ca.pem /usr/local/share/ca-certificates/corp-root-ca.crt sudo update-ca-certificates - 3.
O usar NODE_EXTRA_CA_CERTS
pnpm 12 también respeta esta variable, así que basta un solo ajuste para Node.js, npm y pnpm.
bash # Honoured by pnpm 12 too, so one variable covers node, npm and pnpm export NODE_EXTRA_CA_CERTS=/etc/ssl/private-ca/corp-root-ca.pem pnpm install