Ошибка установки npm - не удалось получить сертификат локального эмитента
Я получаю unable to get local issuer certificate
ошибку unable to get local issuer certificate
при выполнении установки npm:
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
Недавно я обновил узел 4 с более ранней версии, и кажется, что узел становится более строгим, когда возникают подобные проблемы.
Существует проблема обсуждается здесь, который говорит об использовании CA файлы, но это немного выше моего понимания, и я не уверен, что с этим делать.
Я нахожусь за корпоративным брандмауэром, но я могу без проблем получить доступ к URL в браузере.
Есть ли у кого-нибудь дальнейшее понимание этой проблемы и какие есть возможные решения?
Я задаюсь вопросом о возвращении к узлу 0.12 тем временем :(
Ответы
Ответ 1
Параметры можно настроить с помощью конфигурационного файла ~/.typingsrc
. (~
означает ваш домашний каталог)
После обнаружения этой проблемы в github: https://github.com/typings/typings/issues/120, я смог взломать эту проблему, создав ~/.typingsrc
и установив эту конфигурацию:
{
"proxy": "http://<server>:<port>",
"rejectUnauthorized": false
}
Он также работал без настройки proxy
, поэтому, возможно, он смог выбрать что-то из среды где-то.
Это не настоящее решение, но для typings
было достаточно, чтобы игнорировать проблемы корпоративного брандмауэра, чтобы я мог продолжать работать. Я уверен, что там есть лучшее решение.
Ответ 2
Попробуйте npm config set strict-ssl false
. Это альтернатива, распространенная в этом url https://github.com/nodejs/node/issues/3742
Ответ 3
Здесь обсуждается проблема, которая говорит об использовании CA файлов, но она немного за пределами моего понимания, и я не уверен, что с этим делать.
Это не так уж сложно, если вы знаете, как! Для Windows:
Используя Chrome, перейдите на корневой URL, на который жалуется NPM (так что https://raw.githubusercontent.com в вашем случае). Откройте инструменты разработчика и перейдите в Security-> Просмотр сертификата. Проверьте путь сертификации и убедитесь, что вы на верхнем уровне сертификата, если не открыть тот. Теперь перейдите в "Детали" и экспортируйте сертификат с помощью "Копировать в файл...".
Вы должны преобразовать это из DER в PEM. Есть несколько способов сделать это, но самый простой способ, который я нашел, - это онлайн-инструмент, который легко найти по релевантным ключевым словам.
Теперь, если вы откроете ключ в вашем любимом текстовом редакторе, вы должны увидеть
-----BEGIN CERTIFICATE-----
yourkey
-----END CERTIFICATE-----
Это формат, который вам нужен. Вы можете сделать это для столько ключей, сколько вам нужно, и объединить их все в один файл. Я должен был сделать github и ключи реестра npm в моем случае.
Теперь просто отредактируйте ваш .npmrc так, чтобы он указывал на файл, содержащий ваши ключи, вот так
cafile=C:\workspace\rootCerts.crt
Я лично обнаружил, что это лучше работает за нашим корпоративным прокси-сервером, в отличие от опции strict-ssl. YMMV.
Ответ 4
Просто поместите ниже комментарии, используя командную строку.
Его 100% успешно решено
-npm config set strict-ssl false
Ответ 5
Отказ от ответственности: это решение менее безопасно, плохая практика, не делайте этого. У меня было двойное сообщение об ошибке - я за корпоративным VPN/firewall. Мне удалось решить эту проблему, добавив файл .typingsrc в мой каталог пользователя (C:\Users\MyUserName\.typingsrc
в Windows). Конечно, каждый раз, когда вы обходите SSL, вы должны обращаться к своим системным администраторам, чтобы решить проблему с сертификатом.
Измените URL-адрес реестра с https на http, и, как видно из ответа nfiles выше, установите для rejectUnauthorized значение false.
.typingsrc (помещается в каталог проекта или в корневой каталог пользователя)
{
"rejectUnauthorized": false,
"registryURL": "http://api.typings.org/"
}
При желании добавьте свой токен github (я не добился успеха, пока не добавил это тоже.)
{
"rejectUnauthorized": false,
"registryURL": "http://api.typings.org/",
"githubToken": "YourGitHubToken"
}
Инструкции по настройке токена GitHub см. на странице https://github.com/blog/1509-personal-api-tokens.
Ответ 6
Ну, это не правильный ответ, но может рассматриваться как быстрый обходной путь. Правильный ответ - отключить строгий SSL.
У меня та же ошибка
PhantomJS не найден в PATH
Загрузка https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-windows.zip
Сохранение в C:\Users\Sam\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip
Прием...
Ошибка при выполнении запроса.
Ошибка: невозможно получить сертификат локального эмитента
в TLSSocket. (_Tls_wrap.js: 1105: 38)
на emitNone (events.js: 106: 13)
на TLSSocket.emit(events.js: 208: 7)
в TLSSocket._finishInit (_tls_wrap.js: 639: 8)
на TLSWrap.ssl.onhandshakedone(_tls_wrap.js: 469: 38)
Итак, после прочтения ошибки.
Просто скачал файл вручную и поместил его по нужному пути. т.е.
C:\Users\Sam\AppData\Local\Temp\phantomjs\
Это решило мою проблему.
PhantomJS not found on PATH
Download already available at C:\Users\sam\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip
Verified checksum of previously downloaded file
Extracting zip contents
Ответ 7
Добавлять:
process.env["NODE_TLS_REJECT_UNAUTHORIZED"]
Источник: Игнорировать недействительный самоподписанный ssl-сертификат в node.js с помощью https.request?