it-swarm.com.ru

ошибка установки npm - невозможно получить сертификат локального эмитента

Я получаю ошибку 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 тем временем :(

13
mindparse

Наборы могут быть настроены с помощью файла конфигурации ~/.typingsrc. (~ означает ваш домашний каталог)

После обнаружения этой проблемы на github: https://github.com/typings/typings/issues/120 , мне удалось обойти эту проблему, создав ~/.typingsrc и настроив эту конфигурацию:

{
  "proxy": "http://<server>:<port>",
  "rejectUnauthorized": false
}

Казалось также, что он работает без настройки proxy, так что, возможно, он смог где-то извлечь это из среды.

Это неверное решение, но его было достаточно для typings, чтобы игнорировать проблемы корпоративного брандмауэра, чтобы я мог продолжить работу. Я уверен, что есть лучшее решение.

8
nfiles

Попробуйте этот npm config set strict-ssl false. Это альтернатива, используемая в этом URL https://github.com/nodejs/node/issues/3742

40
Sam Jacob Dev

Здесь обсуждается проблема, которая говорит об использовании CA-файлов, но это немного за пределами моего понимания, и я не уверен, что с этим делать.

Это не так уж сложно, если вы знаете, как! Для Windows:

Используя Chrome, перейдите по корневому URL-адресу, на который жалуется NPM (поэтому https://raw.githubusercontent.com в вашем случае). Откройте инструменты разработчика и зайдите в Security-> View Certificate. Проверьте путь сертификации и убедитесь, что ваш сертификат верхнего уровня, если он не открыт. Теперь перейдите в «Детали» и экспортируйте сертификат с помощью «Копировать в файл ...».

Вы должны преобразовать это из DER в PEM. Есть несколько способов сделать это, но самый простой способ, который я нашел, - это онлайн-инструмент, который легко найти по релевантным ключевым словам. 

Теперь, если вы откроете ключ в вашем любимом текстовом редакторе, вы должны увидеть 

-----BEGIN CERTIFICATE----- 

yourkey

-----END CERTIFICATE-----

Это формат, который вам нужен. Вы можете сделать это для столько ключей, сколько вам нужно, и объединить их все в один файл. Я должен был сделать github и ключи реестра npm в моем случае.

Теперь просто отредактируйте ваш .npmrc так, чтобы он указывал на файл, содержащий ваши ключи, вот так

cafile=C:\workspace\rootCerts.crt

Я лично обнаружил, что это лучше работает за нашим корпоративным прокси-сервером, в отличие от опции strict-ssl. YMMV.

5
Tim L

Отказ от ответственности: это решение менее безопасно, плохая практика, не делайте этого. У меня появилось двойное сообщение об ошибке - я за корпоративным 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

1
Benson

Это не правильный ответ, но его можно рассматривать как быстрый обходной путь. Правильный ответ - отключить строгий 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                                    
0
Sam