Невозможно проверить первый сертификат (grpc/node)

Для некоторого фона я следую этому учебнику, пытаясь заставить работать пример узла.

Я скачал папку, перешел в каталог cd'd и попытался запустить npm install.

Я получаю следующую трассировку стека.

npm WARN package.json grpc-examples@0.1.0 No repository field.
npm WARN package.json grpc-examples@0.1.0 No license field.
\
> grpc@1.12.2 install /tmp/grpc/examples/node/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library

node-pre-gyp WARN Tried to download(400): https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.12.2/node-v46-linux-x64-glibc.tar.gz 
node-pre-gyp WARN Pre-built binaries not found for grpc@1.12.2 and node@4.5.0 (node-v46 ABI, glibc) (falling back to source compile with node-gyp) 
gyp WARN install got an error, rolling back install
gyp ERR! configure error 
gyp ERR! stack Error: unable to verify the first certificate
gyp ERR! stack     at Error (native)
gyp ERR! stack     at TLSSocket.<anonymous> (_tls_wrap.js:1022:38)
gyp ERR! stack     at emitNone (events.js:67:13)
gyp ERR! stack     at TLSSocket.emit (events.js:166:7)
gyp ERR! stack     at TLSSocket._init.ssl.onclienthello.ssl.oncertcb.TLSSocket._finishInit (_tls_wrap.js:586:8)
gyp ERR! stack     at TLSWrap.ssl.onclienthello.ssl.oncertcb.ssl.onnewsession.ssl.onhandshakedone (_tls_wrap.js:428:38)
gyp ERR! System Linux 4.8.13-100.fc23.x86_64
gyp ERR! command "/home/nbkiq0w/.nvm/versions/node/v4.5.0/bin/node" "/home/nbkiq0w/.nvm/versions/node/v4.5.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--libr$ry=static_library" "--module=/tmp/grpc/examples/node/node_modules/grpc/src/node/extension_binary/node-v46-linux-x64-glibc/grpc_node.node" "--module_name=grpc_node" "--module_path=/tmp/grpc/examples/node/node_mo$ules/grpc/src/node/extension_binary/node-v46-linux-x64-glibc" "--node_abi_napi=node-v46"

Есть еще кое-что для трассировки стека, но я думаю, что в этом суть.

Unable to verify the first certificate

кажется актуальным здесь.

Я немного погуглил и нашел это, которое, кажется, решает мою проблему. Я изменил пример исходного кода,

examples/node/dynamic_codegen/greeter_server.js

Теперь в верхнюю часть существующего файла добавлено следующее.

var rootCas = require('ssl-root-cas/latest').create();                                                                                                                                                             
rootCas                                                                                                                                                                                                            
   .addFile('/etc/pki/ca-trust/source/anchors/amrs-g2.cer');                                                                                                                                                        
require('https').globalAgent.options.ca = rootCas;    

В попытке следовать этой схеме. Я все еще вижу ту же проблему. У кого-нибудь есть идеи? Я должен упомянуть, что я использую версию узла 4.5.0 и версию 2.15.9 npm.

Я пытался немного возиться с версиями, но не могу заставить его работать.

редактировать 1:

Пробовал обновлять версию узла до 10.0.0 Npm версии 5.6.0

Снова попробовал установить npm, на этот раз странная ошибка...

npm install
npm ERR! code E418
npm ERR! 418 I'm a teapot: async@^1.5.2

редактировать 2:

Попытка запуска команды снова и снова, кажется, что библиотека, в которой она терпит неудачу, более или менее случайна.

npm ERR! code E418
npm ERR! 418 I'm a teapot: grpc@^1.0.0
^C
[nbkiq0w@localhost node]$ npm install 
npm ERR! code E418
npm ERR! 418 I'm a teapot: google-protobuf@^3.0.0
^C
[nbkiq0w@localhost node]$ npm install 
npm ERR! code E418
npm ERR! 418 I'm a teapot: lodash@^4.6.1
^C
[nbkiq0w@localhost node]$ npm install 
npm ERR! code E418
npm ERR! 418 I'm a teapot: grpc@^1.0.0
^C
[nbkiq0w@localhost node]$ npm install 
npm ERR! code E418
npm ERR! 418 I'm a teapot: lodash@^4.6.1

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

редактировать 3:

переключился обратно на узел 6.12.0 и увидел исходную ошибку tls. Один из моих друзей смог загрузить каталог узла как есть и запустить на своем компьютере (используя 6.12.0), поэтому он должен быть изолирован от моего компьютера.

1 ответ

Решение

На другой странице я нашел несколько советов по настройке файла.npmrc, найденного в моем домашнем каталоге. Я добавил следующую строку

cafile=<my cert file>

И установка npm работала. Я не уверен, почему установка моего друга сработала, поскольку у него даже не было этого файла, но на данный момент этого достаточно.

Другие вопросы по тегам