Я использую Amazon Linux на AWS EC2, использую версию 1.3.6 npm и версию узла 0.10.42 (древняя, но в настоящее время обновление рискованно).Стоит отметить, что между этой машиной и Интернетом есть нет прокси.
При запуске npm install
выдает ошибку:
npm ERR! fetch failed https://registry.npmjs.org/fibers/-/fibers-1.0.13.tgz
npm ERR! Error: UNABLE_TO_GET_ISSUER_CERT_LOCALLY
npm ERR! at SecurePair.<anonymous> (tls.js:1381:32)
npm ERR! at SecurePair.emit (events.js:92:17)
npm ERR! at SecurePair.maybeInitFinished (tls.js:980:10)
npm ERR! at CleartextStream.read [as _read] (tls.js:472:13)
npm ERR! at CleartextStream.Readable.read (_stream_readable.js:341:10)
npm ERR! at EncryptedStream.write [as _write] (tls.js:369:25)
npm ERR! at doWrite (_stream_writable.js:226:10)
npm ERR! at writeOrBuffer (_stream_writable.js:216:5)
npm ERR! at EncryptedStream.Writable.write (_stream_writable.js:183:11)
npm ERR! at write (_stream_readable.js:602:24)
npm ERR! at flow (_stream_readable.js:611:7)
npm ERR! at Socket.pipeOnReadable (_stream_readable.js:643:5)
npm ERR! If you need help, 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! System Linux 4.9.51-10.52.amzn1.x86_64
npm ERR! command "node" "/usr/bin/npm" "install"
npm ERR! cwd /home/meteor-testing/Meteor_Server_Production/bundle/programs/server
npm ERR! node -v v0.10.42
npm ERR! npm -v 1.3.6
Это не тактолько пакет fibers
, все запросы на https://registry.npm.org
с ошибками.
Насколько я могу судить, эта ошибка означает, что сертификат, отправленный сервером реестра npm, не может быть проверен на соответствиеустановленный набор корневых сертификатов.
Я искал и нашел это "решение":
npm config set strict-ssl false
Это решает непосредственную проблему, но делает установку пакетов небезопасной.
Аналогично плохая альтернатива:
npm config set registry http://registry.npmjs.org/
Кажется, это работает для некоторых запросов, но большинство из них (возможно, косвенные зависимости?) Все равно переписываются в https.
Если я запускаю
curl https://registry.npmjs.org/fibers/-/fibers-1.0.13.tgz
с этой машины работает нормально.Так может npm использует неправильный набор корневых сертификатов?Я могу узнать, что curl
использует:
curl -vv https://registry.npmjs.org/type-of/-/type-of-2.0.1.tgz >/dev/null
...
* Connected to registry.npmjs.org (104.16.23.35) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
Я сделал
yum update ca-certificates
, чтобы убедиться, что этот файл обновлен.Не помогло.
Поэтому моей следующей попыткой было указать npm и на этот пакет:
npm config set cafile /etc/pki/tls/certs/ca-bundle.crt
Но это тоже не помогает;по-прежнему появляется та же ошибка.
Как заставить работать npm без ущерба для безопасности?