Estou usando o npm v1.0.104 / nó 0.6.12 no ubuntu - estou recebendo o erro copiado abaixo ao tentar instalar novos módulos via npm (testei o socket.io anteriormente usando http, não https embora e estou pensando se isso poderia resultaram no problema com npm / certificados não assinados). O erro aparece quando o npm tenta resolver o ' https://registry.npmjs.org URL ' '. Existe alguma maneira de ignorar o erro ou talvez localizar / adicionar o certificado a uma loja confiável para continuar usando o npm.
Qualquer insight sobre o que precisa ser feito para resolver o problema será apreciado (eu preferiria resolvê-lo através da configuração, em vez de reinstalar, se possível).
Erro: "Erro: Erro SSL: SELF_SIGNED_CERT_IN_CHAIN"
Mensagem completa:
npm ERR! Error: SSL Error: SELF_SIGNED_CERT_IN_CHAIN
npm ERR! at ClientRequest.<anonymous> (/usr/lib/node_modules/npm/node_modules/request/main.js:252:28)
npm ERR! at ClientRequest.emit (events.js:67:17)
npm ERR! at HTTPParser.onIncoming (http.js:1261:11)
npm ERR! at HTTPParser.onHeadersComplete (http.js:102:31)
npm ERR! at CleartextStream.ondata (http.js:1150:24)
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! at Socket.emit (events.js:67:17)
npm ERR! Report this *entire* 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.38-13-generic
npm ERR! command "node" "/usr/bin/npm" "install" "jed"
npm ERR! node -v v0.6.12
npm ERR! npm -v 1.0.104
node.js
ssl-certificate
npm
ali haider
fonte
fonte
Respostas:
A execução do seguinte ajudou a resolver o problema:
Não posso comentar se isso causará outros problemas neste momento. Espero que ajude.
fonte
Em 27 de fevereiro de 2014, o npm não suporta mais seus certificados autoassinados . As opções a seguir, conforme recomendado pelo npm, são as seguintes:
Atualize sua versão do npm
- OU -
Diga à sua versão atual do npm para usar registradores conhecidos
Atualização: o npm postou Mais ajuda com SELF_SIGNED_CERT_IN_CHAIN e o npm com mais soluções específicas para diferentes ambientes
Você pode ou não precisar anexar
sudo
as recomendações.Outras opções
Parece que as pessoas estão tendo problemas usando as recomendações do npm, então aqui estão algumas outras soluções em potencial.
Atualizar o próprio nó O
recebimento desse erro pode sugerir que você tenha uma versão mais antiga do nó, que naturalmente vem com uma versão mais antiga do npm. Uma solução é atualizar sua versão do Node. Essa é provavelmente a melhor opção, pois atualiza e corrige bugs e vulnerabilidades existentes.
O processo aqui depende de como você instalou o Node, seu sistema operacional e outros.
Update npm
Como você provavelmente chegou aqui ao tentar
install
um pacote, é possível quenpm install npm -g
isso ocorra com o mesmo erro. Se for esse o caso, use emupdate
vez disso. Como sugerido por Nisanth Sojan:Atualizar alternativa do npm
Uma maneira de contornar o problema subjacente é usar registradores conhecidos, instalar e parar de usar registradores conhecidos. Como sugerido por jnylen:
fonte
npm config set ca ""
primeiro, depois atualize e desfaça a alteração na configuração. Veja: stackoverflow.com/a/22099006/106302sudo
altera o usuário, o-g
sinalizador define se deve ser instalado globalmente para esse usuário ou apenas no localnode_modules
.Por enquanto, mudei o URL do registro de https para http. Como isso:
fonte
Para salvá-lo globalmente
fonte
cb() never called!
erro npmVocê precisa atualizar o npm.
Pode ser necessário prefixar esses comandos com
sudo
.Fonte: http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
fonte
sudo
é necessário, e apenas o prefixo do comando upgradesudo
funcionou bem para mim. YMMV.O erro
SELF_SIGNED_CERT_IN_CHAIN
significa que você possui um certificado autoassinado na cadeia de certificados, que basicamente não é confiável pelo sistema.Se isso acontecer, basicamente algo suspeito está acontecendo; portanto, como as pessoas já comentaram, não é recomendável desabilitar apenas as verificações de certificado, mas uma abordagem melhor é entender qual é o problema e corrigir a causa.
Talvez isso esteja relacionado a:
endereço de repositório personalizado que não possui o certificado certo,
uma rede corporativa com proxy transparente.
Se você possui um proxy da web corporativo, deve configurar as variáveis de ambiente
HTTP_PROXY
/ apropriadasHTTPS_PROXY
ou configurá-las vianpm
:Consulte: Como configurar o Node.js e o Npm atrás de um proxy da Web corporativo
Se você confiar no host, poderá exportar o certificado autoassinado da cadeia e importá-lo para o sistema, para que seja marcado como confiável.
Isso pode ser conseguido verificando os certificados por (mude
example.com
para o repositório npm que está falhando com base nonpm-debug.log
):salve o conteúdo do certificado (entre
BEGIN
eEND
) no.crt
arquivo para importá-lo.Linux
Conforme sugestão , você pode adicionar um certificado exportado ao
/etc/environment
arquivo (Nó 7.4+), como:CentOS
No CentOS 5, isso pode ser anexado ao
/etc/pki/tls/certs/ca-bundle.crt
arquivo, por exemploNota: Para exportar apenas o primeiro certificado, remova
g
no início.No CentOS 6, o arquivo de certificado pode ser copiado para
/etc/pki/ca-trust/source/anchors/
.Ubuntu / Debian
No Ubuntu / Debian, copie o arquivo CRT
/usr/local/share/ca-certificates/
e execute:Mac OS
No macOS, você pode executar:
janelas
No Windows:
certutil -addstore -f "ROOT" new-root-certificate.crt
Consulte também: npm - Solução de problemas - Erro SSL
fonte
Colocar isso antes do comando parece funcionar
NODE_TLS_REJECT_UNAUTHORIZED=0
. ex:NODE_TLS_REJECT_UNAUTHORIZED=0 npm ...
Seria melhor descobrir como fazer o nó ver o certificado autoassinado como válido. A sugestão strict-ssl acima não funcionou para mim por algum motivo. Se você entende as implicações de segurança e precisa de uma solução rápida temporária, foi o que encontrei em alguns problemas aleatórios do github durante a pesquisa do erro no Google.
fonte
O repositório não suporta mais certificados autoassinados. Você precisa atualizar
npm
.Você precisa abrir uma nova sessão do terminal para usar a atualização
npm
.Fonte: Esta foi originalmente uma edição da resposta de jnylen . Embora as diretrizes digam "Congratulamo-nos com todas as edições construtivas, mas as tornemos substanciais", a edição foi rejeitada devido a "Esta edição muda muito na postagem original; o significado ou a intenção original da postagem seriam perdidos". Eu acho que a comunidade prefere uma resposta separada.
fonte
sudo ln -s /usr/bin/nodejs /usr/bin/node
.Para aqueles que em um mac com o mesmo problema e instalaram o npm via homebrew :
então
Funciona para mim no osx (10.9.1)
EDIT : Você pode precisar
brew update
antes de instalar o npm. Você também pode fazer umabrew upgrade
após a atualização do homebrew. Também pode ser útil executarbrew doctor
se você tiver outros problemas.fonte
Solução rápida e limpa (testada em Linux) (após o fatídico em 27 de fevereiro de 2014)
Desinstalar npm
Instale o npm (o novo URL é www.npmjs.org em vez de npmjs.org )
Dica : como instalar o node.js no linux https://stackoverflow.com/a/22099363/333061
fonte
https://www.npmjs.org/install.sh
no seu navegador e fazer o download antes de executá-lo manualmente.curl https://npmjs.org/install.sh
comando anterior está redirecionando parahttps://www.npmjs.org/install.sh
é por isso quecurl https://www.npmjs.org/install.sh | sh
funciona perfeitamente. está bem para instalar a partir de agora pouco padawan. :)Desinstale o NPM e instale-o novamente.
Em 27 de fevereiro de 2014, o npm não suporta mais seus certificados autoassinados. http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
O link acima sugere a atualização do NPM usando o NPM. Isso também falha com SELF_SIGNED_CERT_IN_CHAIN ...
fonte
Desativar o SSL parece ser uma péssima idéia. O blog da npm explica que eles não oferecem mais suporte ao certificado autoassinado. Eles sugerem a atualização do npm via
npm install npm -g
, mas é claro que recebi o mesmo erro SELF_SIGNED_CERT_IN_CHAIN. Acabei de atualizar o nó, que atualizou o npm junto com ele. O procedimento exato depende de como você instalou o nó em primeiro lugar.fonte