npm install で SSL Error になった時の対処法。

npm install をしようとしたら、「npm ERR! Error: SSL Error: CERT_UNTRUSTED」というエラーが発生した。

$ npm install
npm http GET https://registry.npmjs.org/querystring
npm http GET https://registry.npmjs.org/connect-mongo/0.2.0
npm http GET https://registry.npmjs.org/dateformat/1.0.2-1.2.3
npm http GET https://registry.npmjs.org/async/0.2.5
npm http GET https://registry.npmjs.org/geocoder/0.1.0
npm http GET https://registry.npmjs.org/log4js/0.5.7
npm http GET https://registry.npmjs.org/imagemagick/0.1.2
npm http GET https://registry.npmjs.org/ejs/0.8.3
npm http GET https://registry.npmjs.org/request/2.11.4
npm http GET https://registry.npmjs.org/mongodb/1.1.7
npm http GET https://registry.npmjs.org/should

npm ERR! Error: SSL Error: CERT_UNTRUSTED
npm ERR!     at ClientRequest.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/request/main.js:483:26)
npm ERR!     at ClientRequest.g (events.js:156:14)
npm ERR!     at ClientRequest.emit (events.js:67:17)
npm ERR!     at HTTPParser.parserOnIncomingClient [as onIncoming] (http.js:1256:7)
npm ERR!     at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:91:29)
npm ERR!     at CleartextStream.socketOnData [as ondata] (http.js:1288:20)
npm ERR!     at CleartextStream._push (tls.js:375:27)
npm ERR!     at SecurePair.cycle (tls.js:734:20)
npm ERR!     at EncryptedStream.write (tls.js:130:13)
npm ERR!     at Socket.ondata (stream.js:38:26)
npm ERR! You may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>
npm ERR! 
npm ERR! System Linux 2.6.18-308.11.1.el5
npm ERR! command "node" "/usr/local/bin/npm" "install"
npm ERR! cwd /home/cmp/src/send/server
npm ERR! node -v v0.6.19
npm ERR! npm -v 1.1.24
npm ERR! message SSL Error: CERT_UNTRUSTED
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/cmp/src/send/server/npm-debug.log
npm not ok
npm not ok

httpsのレジストリに対して、SSL鍵のバリデーションを行っていることが原因らしいので、一旦この設定を false にすると npm install が成功するようになる。npm install 後には true に戻しておく。

$ npm config set strict-ssl false
$ npm install
$ npm config set strict-ssl true

また、下記のように CA を null で設定しても回避できるようになるらしいです。

$ npm config set ca “”
Node.jsnpm