Saltar al contenido
ecdsa.com
npm (Node.js)Gestores de paquetes

Mensaje de error

npm error code CERT_HAS_EXPIRED

También se muestra como

  • npm ERR! code CERT_HAS_EXPIRED
  • npm error request to https://registry.example.com/lodash failed, reason: certificate has expired

npm 10 y posteriores imprimen «npm error code CERT_HAS_EXPIRED»; npm 9 y anteriores, «npm ERR! code CERT_HAS_EXPIRED». Las líneas siguientes indican la URL con «reason: certificate has expired».

npm (Node.js) — registry request over HTTPS

Qué significa

Un certificado de la cadena que npm recibió del registro (o de un proxy que haya entre ambos) ha superado su fecha de caducidad según el reloj de este equipo. En el registro público, esto casi nunca significa que haya caducado el propio certificado de npm: apunta a una CA antigua fijada en tu configuración de npm, a una lista de raíces de Node.js obsoleta, a un certificado de proxy o a un reloj mal configurado. En los registros privados, el certificado del servidor puede haber caducado de verdad.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Comprobar qué registro y qué certificado intervienen

    Consulta el registro configurado y la fecha de fin de validez del certificado que sirve. Un certificado caducado en un registro privado debe renovarse en el servidor.

    bash
    npm config get registry
    echo | openssl s_client -connect registry.example.com:443 -servername registry.example.com 2>/dev/null \
      | openssl x509 -noout -subject -enddate
  2. 2.

    Eliminar los ajustes ca o cafile obsoletos

    npm config list muestra la configuración de todos los niveles de .npmrc; elimina las entradas ca o cafile que apunten a certificados antiguos (o actualiza el archivo al que hacen referencia).

    bash
    # An old CA pinned in .npmrc replaces the default roots: list and remove it
    npm config list | grep -E '^;? *(ca|cafile)'
    npm config delete ca
    npm config delete cafile
  3. 3.

    Actualizar Node.js y npm

    Una versión de Node.js con mantenimiento trae una lista de raíces actual; actualiza npm después.

    bash
    node -v && npm -v   # Node.js bundles its root list; very old releases carry expired roots
    # upgrade Node.js to a maintained release (nvm, fnm, volta or your OS packages), then:
    npm install -g npm@latest

Errores relacionados

Explorar toda la base de datos de errores de firma