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

Mensaje de error

npm error code ERR_TLS_CERT_ALTNAME_INVALID

También se muestra como

  • npm ERR! code ERR_TLS_CERT_ALTNAME_INVALID
  • npm error request to https://registry.example.com/lodash failed, reason: Hostname/IP does not match certificate's altnames: Host: registry.example.com. is not in the cert's altnames: DNS:www.example.com

npm 10 y posteriores imprimen «npm error code ERR_TLS_CERT_ALTNAME_INVALID»; npm 9 y anteriores, «npm ERR! code ERR_TLS_CERT_ALTNAME_INVALID». El host y los altnames de la línea del motivo proceden de tu configuración y del certificado del servidor.

npm (Node.js) — registry request over HTTPS

Qué significa

El certificado del registro es de confianza, pero no se emitió para el nombre de host de la URL del registro que usó npm. La línea del motivo detalla ambos lados: el host que pidió npm y los nombres que contiene el certificado. Es típico después de que un registro cambie de nombre, o cuando la URL del registro usa un alias, una dirección IP o el entorno equivocado.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Comparar la configuración de registro de npm con el certificado

    Imprime el registro configurado (y la configuración del proxy) y la lista SAN del certificado. Los lockfiles también contienen URL resueltas, que deben usar el mismo host.

    bash
    npm config get registry
    npm config list | grep -iE 'registry|proxy'
    echo | openssl s_client -connect registry.example.com:443 -servername registry.example.com 2>/dev/null \
      | openssl x509 -noout -ext subjectAltName
  2. 2.

    Apuntar npm al nombre del certificado

    Actualiza la configuración de registro en todos los niveles de .npmrc (y regenera los lockfiles si contienen el host antiguo).

    bash
    # Use the host name the registry's certificate was issued for
    npm config set registry https://npm.example.com/
  3. 3.

    Propietarios del registro: cubrir todos los nombres en uso

    Vuelve a emitir el certificado del registro con todos los nombres de host que usan los clientes, incluidos los alias que se mantienen por compatibilidad.

    bash
    # Registry owners: include every name clients use
    sudo certbot certonly --nginx -d npm.example.com -d registry.example.com

Errores relacionados

Explorar toda la base de datos de errores de firma