Node: Nodejs 4 presenta el error UNABLE_TO_GET_ISSUER_CERT_LOCALLY para los usuarios detrás de los firewalls de la empresa

Creado en 10 nov. 2015  ·  25Comentarios  ·  Fuente: nodejs/node

Nodejs 4 parece introducir un error UNABLE_TO_GET_ISSUER_CERT_LOCALLY para los usuarios detrás de un firewall de la empresa.

Npm install y otros comandos ya no funcionan después de la actualización de Nodejs 0.12 a Nodejs 4 o 5. Después de la discusión en los foros de npm, la idea actual es que esto puede ser un problema en Node en lugar de Npm.

Consulte https://github.com/npm/npm/issues/9580.
también
https://github.com/npm/npm/issues/10125
https://github.com/npm/npm/issues/9906

Este problema impide que nuestro equipo actualice a Nodejs 4 o 5. Cualquier sugerencia es bienvenida.

Gracias

tls

Comentario más útil

npm config establece estricto-ssl falso

Todos 25 comentarios

npm config establece estricto-ssl falso

Si recibe ese error, lo más probable es que sea un problema con su proxy. El error en sí solo significa que un certificado TLS en la cadena está firmado por una CA desconocida, presumiblemente el certificado que usa su proxy.

v4.xy v5.x son más estrictas que la v0.12, pero la mayoría de la gente lo consideraría algo bueno.

@bricss , sí, lo intenté y también always-auth = false. No ayuda, pero gracias por la sugerencia.

@bnoordhius , sí, comenzando en v4.x, tengo entendido que necesitaremos configurar el cafile para incluir la cadena de certificados de nuestra empresa. Lo hice usando npm así:

npm config set cafile="C:\\mycacert.pem" 

mycacert.pem es un archivo que contiene varios certificados X509 con formato PEM en este formato:

-----BEGIN CERTIFICATE-----
MIIEczCCA1ugAwIBAgIBADANBgkqhkiG9w0BAQQFAD..AkGA1UEBhMCR0Ix
EzARBgNVBAgTClNvbWUtU3RhdGUxFDASBgNVBAoTC0..0EgTHRkMTcwNQYD
etc...
It8una2gY4l2O//on88r5IWJlm1L0oA8e4fR2yrBHX..adsGeFKkyNrwGi/
7vQMfXdGsRrXNGRGnX+vWDZ3/zWI0joDtCkNnqEpVn..HoX
-----END CERTIFICATE-----

También intenté configurar una matriz de CA siguiendo la documentación aquí: https://docs.npmjs.com/misc/config.

Con el nivel de registro subido a un nivel tonto.

npm install -ddd

este es el primer error que me sale

gyp verb created nodedir C:\Users\myname\.node-gyp\4.2.2
gyp http GET https://nodejs.org/download/release/v4.2.2/node-v4.2.2-headers.tar.gz
gyp WARN install got an error, rolling back install
gyp verb command remove [ '4.2.2' ]
gyp verb remove using node-gyp dir: C:\Users\myname\.node-gyp
gyp verb remove removing target version: 4.2.2
gyp verb remove removing development files for version: 4.2.2
gyp ERR! configure error 
gyp ERR! stack Error: unable to get local issuer certificate
gyp ERR! stack     at Error (native)
gyp ERR! stack     at TLSSocket.<anonymous> (_tls_wrap.js:1003:38)
gyp ERR! stack     at emitNone (events.js:67:13)
gyp ERR! stack     at TLSSocket.emit (events.js:166:7)
gyp ERR! stack     at TLSSocket._finishInit (_tls_wrap.js:570:8)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"

Supongo que nuestro certificado raíz o intermedio no se pasa a openSSL. No veo ningún error sobre una carga defectuosa o un formato no válido. Modifiqué npmlibconfigload-cafile.js para confirmar que se estaba llamando y cargando mi cafile. más allá de eso, no he profundizado en el código.

Sería útil más salida de error. ¿Hay alguna forma de ver las declaraciones de depuración del módulo openssl que utiliza el nodo?

Gracias

gyp http GET https://nodejs.org/download/release/v4.2.2/node-v4.2.2-headers.tar.gz

Eso es porque node-gyp no usa la configuración de proxy de npm, o al menos no la configuración de cafile. Una solicitud de extracción a node-gyp que honre process.env.npm_config_cafile probablemente será aceptada.

Alternativamente, si acepta los riesgos, env NODE_TLS_REJECT_UNAUTHORIZED npm whatever evitará la verificación de CA por completo.

@bnoordhuis ¡ gracias por la información! Estamos hablando de nuestras opciones.

process.env.npm_config_cafile

@bnoordhuis ¿sabes si esto alguna vez se planteó?

@voltagex No lo creo.

todavía estamos interesados ​​en una solución para esto. Seguimos usando Nodejs v0.12

PR para node-gyp: https://github.com/nodejs/node-gyp/pull/844

Al mencionar lo siguiente para todas las personas que intentan 'npm install' otras cosas y obtienen errores similares, Google está resolviendo este problema como resultado:

Para su información, dependiendo de lo que esté intentando instalar, es posible que un módulo en sí no sea malo con ssl / cafiles. electron-prebuilt es un gran ejemplo. Tiene un script install.js que configura la descarga de un archivo y luego no busca ninguna configuración. Peor aún, la descarga de electrones busca una opción "estrictaSSL", pero la precompilación de electriones no pasa una.

TLDR: sus problemas con los certificados autofirmados pueden no estar relacionados con npm o node-gyp: pero el uso de npm puede ser la forma en que experimente ese error.

¡Gracias @bricss! Trabajado como un encanto

¿Hay alguna razón para mantener este abierto?

@bricss , sí, eso también funciona para mí .. saludos

Estoy detrás de un proxy HTTPS corporativo.
Tengo el problema incluso cuando agrego los certificados de CA raíz corporativos al sistema (en /etc/pki/tls/certs/ca-bundle.crt en Fedora 23).

npm update -g
npm ERR! Linux 3.16.7-35-default
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "update" "-g"
npm ERR! node v4.4.2
npm ERR! npm  v2.15.0
npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY

npm ERR! unable to get local issuer certificate
npm ERR! 
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     /npm-debug.log

Para pasar más allá de este problema, tengo que configurar la configuración para usar el cafile
npm config set cafile=/etc/pki/tls/certs/ca-bundle.crt -g
Después de eso, el _UNABLE_TO_GET_ISSUER_CERT_LOCALLY_ desaparece, pero tengo otro problema:

npm update -g
npm ERR! Linux 3.16.7-35-default
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "update" "-g"
npm ERR! node v4.4.2
npm ERR! npm  v2.15.0

npm ERR! Hostname/IP doesn't match certificate's altnames: "Host: registry.npmjs.org. is not in the cert's altnames: DNS:a.sni.fastly.net, DNS:a.sni.global-ssl.fastly.net"
npm ERR! 
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     /npm-debug.log

La única solución alternativa es strict-ssl=false . Pero esa no es una solución bonita ...

  1. No estoy seguro de que la configuración de _cafile_ haya resuelto el primer problema o haya agregado otro.
    Si resolvió el primer problema, significa que npm no lee los certificados raíz instalados en el sistema. Quizás debería cambiarse. _wget_ y _curl_ leen estos certificados sin problemas.
  2. El segundo problema es realmente extraño, busqué en Google solo un problema similar y no hay una solución propuesta.

Solo agrego mis experiencias con este problema.

Estaba teniendo este problema al intentar instalar las dependencias para el inicio rápido de angular2 . También estoy detrás de un proxy y comencé tratando de establecer la configuración del proxy y strict-ssl=false en mi archivo .npmrc pero sin éxito después de hacerlo.

El error que vi se estaba generando durante un comando postinstall 'typings install':

> typings install

typings ERR! message Unable to read typings for "es6-shim". You should check the
 entry paths in "es6-shim.d.ts" are up to date
typings ERR! caused by Unable to connect to "https://raw.githubusercontent.com/D
efinitelyTyped/DefinitelyTyped/7de6c3dd94feaeb21f20054b9f30d5dabc5efabd/es6-shim
/es6-shim.d.ts"
typings ERR! caused by unable to get local issuer certificate

Terminé teniendo que agregar el archivo .typingsrc en la misma ubicación que mi archivo .npmrc con las siguientes líneas agregadas:

proxy = http: //proxy.address : proxy.port
rechazarUnauthorized = falso

Esto me ayudó a superar el error unable to get local issuer certificate y continuó con la multa de instalación.

Esto puede no ser relevante, pero pensé que lo agregaría aquí, ya que puede ser útil para alguien, ¡me tomó unos días descubrirlo!

Para cerrar, esto debería solucionarse con el nuevo indicador --cafile para node-gyp que se lanzó en node.js v4.4.3 y v5.10.0. Si configura cafile en su .npmrc , node-gyp debería recogerlo automáticamente cuando se invoca a través de npm.

Solo agregue un comentario aquí, para configurar el uso de cafile :

npm config set cafile=/Path/to/your/file.pem

Donde el contenido del archivo .pem es similar a este (texto sin formato con marcas de certificado BEGIN / END y contenido base64)

Para generar el archivo .pem partir de un archivo .crt válido, se puede utilizar lo siguiente:

openssl x509 -inform der -in /Path/to/the.crt -out /Path/to/the/file.pem

Paso bastante tiempo averiguando eso.

npm config set cafile = "C: mycacert.pem"
funcionó para mí, gracias @greenmountains

Usamos artificial, por lo que mi proxy se ve así:
proxy = nulo
https-proxy = URL del proxy
http-prox = misma URL de proxy
estricto-ssl = falso
registro = URL del artefacto

esto me haría esperar, así que los cambié a:
proxy = URL del proxy
https-proxy = URL del proxy
http-prox = misma URL de proxy
estricto-ssl = falso
cafile = C: cafile.pem

por lo tanto, pasará por una repetición normal, agregando un proxy normal y un archivo de certificado.
No es el mejor desde entonces, debería pasar por el registro privado, pero al menos pude instalar el paquete que quería.

Esto también funciona: npm config set registry http://registry.npmjs.org/

Tenemos una puerta de enlace de Internet segura que realiza una inspección SSL, utilizando la opción a continuación para especificar el certificado raíz utilizado por la puerta de enlace segura que resolvió el problema.

npm config set ca =

Node.js 7.3.0 agregó la variable de entorno NODE_EXTRA_CA_CERTS para que pueda pasar el archivo de certificado de CA. Es más seguro que deshabilitar la verificación del certificado mediante NODE_TLS_REJECT_UNAUTHORIZED.

$ export NODE_EXTRA_CA_CERTS=[your CA certificate file path]

Esta solución funciona conmigo para node-gyp. npm config set cafile no funciona.

Sigo viendo esto debido a una dependencia de nodo-gyp y mi empresa usa certificados autofirmados.

Mi archivo .npmrc:

strict-ssl=false
cafile=C:/Tools/mycerts.pem
registry=https://registry.npmjs.org/
proxy=companyproxy
http-proxy=companyproxy
https-proxy=companyproxy
NODE_TLS_REJECT_UNAUTHORIZED=0

También probé varias permutaciones con estos, con npm y con hilo:
ca= contra NODE_EXTRA_CA_CERTS=C:/Tools/mycerts.pem contra cafile=C:/Tools/mycerts.pem
con y sin NODE_TLS_REJECT_UNAUTHORIZED

A continuación, mágicamente funcionó _una vez_ con yarn y luego eliminé el paquete 1 npm más tarde y comenzó a fallar nuevamente y no he logrado que funcione desde entonces (¿tal vez una actualización del equipo de red?)

strict-ssl=false
NODE_EXTRA_CA_CERTS=C:/Tools/mycerts.pem
registry=https://registry.npmjs.org/
proxy=companyproxy
http-proxy=companyproxy
https-proxy=companyproxy

Info:

  • Gana 10 x64
  • nodo v8.9.1
  • npm 5.5.1
  • hilo 1.3.2
  • El uso de nvm y node_modules se almacena en C:\Tools

A continuación se muestra mi seguimiento de la pila si alguien puede ayudar ...

error C:\Development\projects\myproject\node_modules\sharp: Command failed.
Exit code: 1
Command: node-gyp rebuild
Arguments:
Directory: C:\Development\projects\myproject\node_modules\sharp
Output:
C:\Development\projects\myproject\node_modules\sharp>if not defined npm_config_node_gyp (node "C:\Tools\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "" rebuild

 )
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | win32 | x64
gyp info spawn C:\Users\username\.windows-build-tools\python27\python.exe
gyp info spawn args [ 'C:\\Tools\\nvm\\v8.9.1\\node_modules\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'msvs',
gyp info spawn args   '-G',
gyp info spawn args   'msvs_version=2015',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Development\\projects\\myproject\\node_modules\\sharp\\build\\config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Tools\\nvm\\v8.9.1\\node_modules\\npm\\node_modules\\node-gyp\\addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\username\\.node-gyp\\8.9.1\\include\\node\\common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=C:\\Users\\username\\.node-gyp\\8.9.1',
gyp info spawn args   '-Dnode_gyp_dir=C:\\Tools\\nvm\\v8.9.1\\node_modules\\npm\\node_modules\\node-gyp',
gyp info spawn args   '-Dnode_lib_file=C:\\Users\\username\\.node-gyp\\8.9.1\\<(target_arch)\\node.lib',
gyp info spawn args   '-Dmodule_root_dir=C:\\Development\\projects\\myproject\\node_modules\\sharp',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'C:\\Development\\projects\\myproject\\node_modules\\sharp\\build',
gyp info spawn args   '-Goutput_dir=.' ]
sharp: https://github.com/lovell/sharp-libvips/releases/download/v8.6.1/libvips-8.6.1-win32-x64.tar.gz download failed: unable to get local issuer certificate
gyp: Call to 'node -e "require('./binding').download_vips()"' returned exit status 1 while in binding.gyp. while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (C:\Tools\nvm\v8.9.1\node_modules\npm\node_modules\node-gyp\lib\configure.js:336:16)
gyp ERR! stack     at emitTwo (events.js:126:13)
gyp ERR! stack     at ChildProcess.emit (events.js:214:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
gyp ERR! System Windows_NT 10.0.15063
gyp ERR! command "C:\\Tools\\nodejs\\node.exe" "C:\\Tools\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Development\projects\myproject\node_modules\sharp

También intenté descargar el código fuente de ese paquete en el GitLab interno de mi empresa y configurar mi env para que busque allí, pero aún falla con el mismo error unable to get local issuer certificate :(

Tuve el mismo problema en Windows 10.

abra Windows PowerShell e ingrese el siguiente comando:
npm config set registro http://registry.npmjs.org/

Entonces puede usar: npm install [su paquete] normalmente.

Yo uso seguir en Windows
SET NODE_TLS_REJECT_UNAUTHORIZED = 0
No pude entender por qué cafile no funciona

Encontré una solución como "npm config set registry http://registry.npmjs.org/ "

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

dfahlander picture dfahlander  ·  3Comentarios

Brekmister picture Brekmister  ·  3Comentarios

addaleax picture addaleax  ·  3Comentarios

seishun picture seishun  ·  3Comentarios

vsemozhetbyt picture vsemozhetbyt  ·  3Comentarios