programing

npm을 사용하는 동안 수신 오류: '오류: SSL 오류: SELF_SIGNED_CERT_IN_CHAIL'

newsource 2023. 5. 20. 10:51

npm을 사용하는 동안 수신 오류: '오류: SSL 오류: SELF_SIGNED_CERT_IN_CHAIL'

Ubuntu에서 npm v1.0.104/node 0.6.12를 사용하고 있습니다. npm을 통해 새 모듈을 설치하려고 시도하는 동안 아래와 같은 오류가 발생합니다(https가 아닌 http를 사용하여 socket.io 를 테스트했습니다. 하지만 이로 인해 npm/unsigned 인증서에 문제가 발생할 수 있었는지 궁금합니다.npm이 'https://registry.npmjs.org ' URL을 확인하려고 하면 오류가 나타납니다.npm을 계속 사용하기 위해 오류를 무시하거나 신뢰할 수 있는 저장소에 인증서를 찾아 추가할 수 있는 방법이 있습니까?

문제를 해결하기 위해 무엇을 해야 하는지에 대한 통찰력이 있으면 감사하겠습니다(가능하면 다시 설치하는 것이 아니라 구성을 통해 문제를 해결하고 싶습니다).

오류: "오류: SSL 오류: SELF_SIGNED_CERT_IN_CHAIN"

전체 메시지:

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

다음을 실행하면 문제를 해결하는 데 도움이 됩니다.

npm config set strict-ssl false

현재로서는 그것이 다른 문제를 일으킬지 여부에 대해서는 언급할 수 없습니다.

2014년 2월 27일 현재, npm은 더 이상 자체 서명 인증서를 지원하지 않습니다.npm에서 권장하는 다음 옵션은 다음 중 하나를 수행하는 것입니다.

npm 버전 업그레이드

npm install npm -g --ca=""

또는 --

현재 버전의 npm에 알려진 등록자를 사용하도록 지시

npm config set ca ""

업데이트: npm은 SELF_SIGNED_CERT_IN_CHAIN에 대한 더 많은 도움말을 게시했으며 npm은 다양한 환경에 대한 더 많은 솔루션을 게시했습니다.



You may or may not need to prepend sudo to the recommendations.


기타 옵션

사람들이 npm의 권장 사항을 사용하는 데 문제가 있는 것으로 보이며, 여기 다른 잠재적인 해결책이 있습니다.

노드 는 다음과 같습니다.
이 오류가 발생하면 이전 버전의 노드가 있으며, 이 노드는 자연스럽게 이전 버전의 npm과 함께 제공됩니다.한 가지 해결책은 노드 버전을 업그레이드하는 것입니다.이 방법은 최신 정보를 제공하고 기존 버그와 취약성을 수정하기 때문에 가장 적합한 옵션일 수 있습니다.

여기서 프로세스는 노드, 운영 체제 또는 기타를 설치한 방법에 따라 달라집니다.

업데이트
당신이 아마도 여기에 왔을 것이라는 것은installnpm install npm -g동일한 오류로 인해 실패할 수 있습니다.이 경우 다음을 사용합니다.update소잔이 와 같이니산스 소잔이 제안한 바와 같이:

npm update npm -g

pm 업데이트하기
기본 문제를 해결하는 한 가지 방법은 알려진 레지스트라를 사용하고 설치한 다음 알려진 레지스트라 사용을 중지하는 것입니다.jnylen은 다음과 같이 합니다.

npm config set ca ""
npm install npm -g
npm config delete ca

지금은 레지스트리 URL을 https에서 http로 바꿨습니다.다음과 같이:

npm config set registry="http://registry.npmjs.org/"
npm config set strict-ssl false -g

전체적으로 저장하는 방법

»SELF_SIGNED_CERT_IN_CHAIN기본적으로 시스템에서 신뢰할 수 없는 인증서 체인에 자체 서명된 인증서가 있음을 의미합니다.

그렇게 되면 기본적으로 뭔가 수상한 일이 벌어지고 있기 때문에 사람들이 이미 언급한 것처럼 단순히 인증서 검사를 비활성화하는 것이 아니라 무엇이 문제인지 파악하고 그 원인을 해결하는 것이 더 나은 접근 방식입니다.

이는 다음과 관련이 있을 수 있습니다.

  • 올바른 인증서가 없는 사용자 지정 리포지토리 주소,

  • 투명한 프록시를 사용하는 기업 네트워크

    이 회사 웹 프록시 뒤에 , 웹 프록시를 해야 합니다.HTTP_PROXY/HTTPS_PROXY합니다.npm:

      npm config set proxy http://proxy.company.com:8080
      npm config set https-proxy http://proxy.company.com:8080
    

    참조: 회사프록시 뒤에 Node.jsNpm을 설정하는 방법

호스트를 신뢰하는 경우 체인에서 자체 서명된 인증서를 내보내고 시스템으로 가져올 수 있으므로 인증서를 신뢰된 것으로 표시할 수 있습니다.

인증서를 확인하여 다음을 수행할 수 있습니다(변경).example.com repo로 합니다. npm repo를 했습니다.npm-debug.log):

openssl s_client -showcerts -connect example.com:443 < /dev/null

다음 인증서 내용을 합니다.BEGIN그리고.END)에서 로으로로.crt파일을 가져올 수 있습니다.

리눅스

제안에 따라 아래를 추가할 수 있습니다./etc/environment 7하여 CA 체인을 "Node 7.4+").

NODE_EXTRA_CA_CERTS=/etc/pki/ca-trust/source/anchors/yourCer‌​ts.pem

센토스

에서 이 을 Cent에 할 수 .OS 5에서 이것을 추가할 수 있습니다./etc/pki/tls/certs/ca-bundle.crt 예:

ex +'g/BEGIN CERTIFICATE/,/END CERTIFICATE/p' <(echo | openssl s_client -showcerts -connect example.com:443) -scq | sudo tee -a /etc/pki/tls/certs/ca-bundle.crt
sudo update-ca-trust force-enable
sudo update-ca-trust extract
npm install

첫: 참번인증내보려면내제거만서고째첫▁remove제▁note.g처음에

6에서는 을 Cent에 할 수 .OS 6에서 인증서 파일을 복사할 수 있습니다./etc/pki/ca-trust/source/anchors/.

우분투/데비안

Ubuntu을 Ubuntu/Debian으로 합니다. CRT 파일은 Ubuntu/Debian 파일입니다./usr/local/share/ca-certificates/그런 다음 실행:

sudo update-ca-certificates

macOS

macOS에서 다음을 실행할 수 있습니다.

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/foo.crt

창문들

Windows 경우)certutil -addstore -f "ROOT" new-root-certificate.crt


참고 항목: npm - 문제 해결 - SSL 오류

당신은 npm을 업그레이드해야 합니다.

// Do this first, or the upgrade will fail
npm config set ca ""

npm install npm -g

// Undo the previous config change
npm config delete ca

에 " 한이가추할수있습니다야러해을음다에령앞명다니"를 붙여야 할 .sudo.

출처: http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more

에 놓는 은 효과가 있는 처럼 보입니다.NODE_TLS_REJECT_UNAUTHORIZED=0 ex:NODE_TLS_REJECT_UNAUTHORIZED=0 npm ...

노드가 자체 서명된 인증서를 유효한 것으로 인식하도록 하는 방법을 찾는 것이 가장 좋습니다.위의 strict-ssl 제안은 어떤 이유에서인지 저에게 효과가 없었습니다.보안의 의미를 이해하고 임시로 빠른 수정이 필요한 경우 Google에서 오류를 검색하는 동안 일부 무작위 Github 문제에서 이를 발견했습니다.

리포지토리가 더 이상 자체 서명된 인증서를 지원하지 않습니다.은 업레합니다야를 업그레이드해야 합니다.npm.

// Disable the certificate temporarily in order to do the upgrade
npm config set ca ""

// Upgrade npm. -g (global) means you need root permissions; be root 
// or prepend `sudo`
sudo npm install npm -g

// Undo the previous config change
npm config delete ca

// For Ubuntu/Debian-sid/Mint, node package is renamed to nodejs which 
// npm cannot find. Fix this:
sudo ln -s /usr/bin/nodejs /usr/bin/node

된 터미널 세션을 .npm.

출처: 이것은 원래 jnylen의 답변에 대한 편집이었습니다.가이드라인에는 "모든 건설적인 편집은 환영하지만, 실질적으로 해주세요"라고 되어 있지만, "이 편집은 원래 게시물에서 너무 많이 변경되어 게시물의 원래 의미나 의도가 상실될 수 있습니다."라는 이유로 편집이 거부되었습니다.공동체는 별도의 답변을 선호하는 것 같습니다.

동일한 문제가 있는 Mac에서 홈브루를 통해 npm을 설치한 경우:

brew uninstall npm

그리고나서

brew install npm

osx(10.9.1)에서 작동합니다.

편집: 다음 작업이 필요할 수 있습니다.brew updatenpm 파일을 하기 전에 하십시오.또한 다음을 수행할 수 있습니다.brew upgrade홈브루를 업데이트한 후.또한 실행하는 것이 도움이 될 수 있습니다.brew doctor다른 문제가 발생한 경우.

단지 창에서의 발전을 위하여.

$Env:NODE_TLS_REJECT_UNAUTHORIZED=0 

옵션이 없을 경우 회사 방화벽 뒤에 있는 대부분의 npm 문제를 비활성화하는 방법에 대한 기사를 만들었습니다.

공격에 취약할 수 있습니다.

https://wnderlvst.com/stories/102a237a-cea1-463b-89db-82224f1c1cbe

파워셸

yarn config set "strict-ssl" false
yarn config set "network-timeout" 600000
$env:NODE_TLS_REJECT_UNAUTHORIZED=0

빠르고 깨끗한 솔루션(리눅스 테스트 완료)(2014년 2월 27일 이후)


npm 제거

npm rm npm -g

npm을 설치합니다(새 URL은 npmjs.org 대신 www.npmjs.org ).

curl https://www.npmjs.org/install.sh | sh

: Linux https://stackoverflow.com/a/22099363/333061 에서 node.js를 설치하는 방법

NPM을 제거하고 다시 설치합니다.

2014년 2월 27일 기준으로 npm은 더 이상 자체 서명 인증서를 지원하지 않습니다.http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more

위 링크는 NPM을 사용하여 NPM을 업그레이드하는 것을 제안합니다.SELF_SIGNED_CERT_IN_CHAIN...에서도 실패합니다.

SSL을 해제하는 것은 매우 나쁜 생각인 것 같습니다.npm의 블로그는 더 이상 자체 서명된 인증서를 지원하지 않는다고 설명합니다.그들은 npm 업그레이드를 제안합니다.npm install npm -gSELF_SIGNED_CERT_IN_CHAIL 파일입니다.그래서 방금 노드를 업데이트했는데 npm도 함께 업데이트했습니다.정확한 절차는 처음에 노드를 설치한 방법에 따라 달라집니다.

회사의 프록시 세부 정보와 사용해야 하는 npm 레지스트리를 찾아야 합니다.그런 다음 사용자 폴더 C:/users/<your_user> 아래에 있는 .npmrc 파일에서 동일하게 지정할 수 있습니다.

다음과 같이 지정할 수 있습니다.

registry=https://your_company/npm/registry/
proxy=http://username:password@proxy:port/
https-proxy=http://username:password@proxy:port/

암호는 일반 텍스트로 되어 있으며, 분명히 이상적이지 않습니다. npm이 이해하는 방식으로 암호화할 수 있는 방법이 있을 수 있습니다.

ca-file을 얻는어려움을 겪고 있는 사람들을 위해:

  1. https://registry.npmjs.org/ 으로 이동합니다.
  2. 사용된 인증서 열기:

Details(세부 정보)를 클릭한 다음 내보내고 (*.pem, *.crt) 파일로 저장합니다.

  1. 다음 이 config에 합니다.npm config set cafile "C:\Users\YOU\nameOfCert.crt"

이것이 당신 중 누군가에게 몇 분/시간을 절약해주기를 바랍니다 :)

저에게 이것은 매우 간단한 해결책이었습니다. 할 일은 "https-proxy"를 통해 이었습니다.npm config set https-proxy "http://proxyserverurl:port"@somshivam의 솔루션도 작동하지만 Azure DevOps와 같은 클라우드 파이프라인으로 모듈을 설치하려면 npmrc 파일에 프록시 설정을 설정할 수 없거나 실패합니다.

회사 프록시 때문에 동일한 SSL 자체 서명 인증서 오류가 발생했습니다.노드집프를 설치하는 동안 문제가 발생했습니다.먼저 Angular/cli를 제거하고 node-gyp를 설치한 다음 Angular cli를 다시 설치하려고 했습니다.

npm uninstall -g @angular/cli
npm install -g node-gyp
npm install -g @angular/cli

완벽하게 작동했습니다.

언급URL : https://stackoverflow.com/questions/9626990/receiving-error-error-ssl-error-self-signed-cert-in-chain-while-using-npm