magic_turtle
magic_turtle

Reputation: 1333

npm error UNABLE_TO_GET_ISSUER_CERT_LOCALLY, how to generate a .pem file from a bundle of certificates and that bundle as well?

Using Webstorm and Node.js, I am trying to install ursa module through npm. I need this module because it is a pre-requisite of another module.

When I do install, the installation fails on node-gyp rebuild.

The console output is as:

C:\Users\{Me}>npm install ursa --save
> [email protected] install C:\Users\{Me}\node_modules\ursa
> node-gyp rebuild

C:\Users\Me\node_modules\ursa>if not defined npm_config_node_gyp 
(node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..
\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "" rebuild )
gyp WARN install got an error, rolling back install
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:1092:38)
gyp ERR! stack     at emitNone (events.js:86:13)
gyp ERR! stack     at TLSSocket.emit (events.js:185:7)
gyp ERR! stack     at TLSSocket._finishInit (_tls_wrap.js:610:8)
gyp ERR! stack     at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:440:38)
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"
gyp ERR! cwd C:\Users\{Me}\node_modules\ursa
gyp ERR! node -v v6.11.0
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "ursa" "--save"
npm ERR! node v6.11.0
npm ERR! npm  v3.10.10
npm ERR! code ELIFECYCLE

npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the ursa package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs ursa
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls ursa
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR! C:\Users\p704644d\{Me}\npm-debug.log

I can provide the log file if needed.

I googled and found out that:

npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY

This error means that there's a TLS certificate in the chain that is signed by an unknown certificate authority (CA). Presumably, this is the certificate used by one's HTTPS proxy. The solution is to configure the cafile value:

$ npm config set cafile /path/to/your/file.pem

If you need to, you can generate a .pem file from a .crt one with:

Source: https://github.com/npm/npm/wiki/Troubleshooting

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

The question is, how do I know what certificate the installation failed on, and how I can generate a .pem file? Where I should find my certificates and how to bundle them in order to get one .pem file? (on Win 7)

Upvotes: 4

Views: 31986

Answers (2)

aram063
aram063

Reputation: 1133

Try

npm config set strict-ssl false

Upvotes: 3

Cheng-Lin Tsao
Cheng-Lin Tsao

Reputation: 2634

If you are behind a corporate firewall that swaps SSL certificate with SSL inspection, ask your network administrator for the certificate file. Otherwise, you may be able to download it using Firefox or Chrome by connecting to any website which the certificate is swapped. Then you may use NODE_EXTRA_CA_CERTS to provide the certificate file to Node.js, as I've answered in How to add custom certificate authority (CA) to nodejs.

Upvotes: 3

Related Questions