npm을 사용하는 동안 오류 수신 : '오류 : SSL 오류 : SELF_SIGNED_CERT_IN_CHAIN'
우분투에서 npm v1.0.104 / node 0.6.12를 사용하고 있습니다-npm을 통해 새 모듈을 설치하려고 할 때 아래에 복사 된 오류 메시지가 나타납니다 (https : //를 사용하지 않고 socket.io를 테스트했지만 https가 아닌 경우 & npm / 서명되지 않은 인증서에 문제가 발생했습니다). 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 에 대한 추가 도움말을 게시 했으며 다른 환경에 더 많은 솔루션을 제공합니다.
sudo
권장 사항 앞에 추가해야 할 수도 있고 필요하지 않을 수도 있습니다
.
다른 옵션
사람들이 npm의 권장 사항을 사용하는 데 문제가있는 것 같으므로 다른 잠재적 인 해결책이 있습니다.
업그레이드 노드
자체이 오류를 수신하면 이전 버전의 npm과 함께 제공되는 이전 버전의 노드가있을 수 있습니다. 한 가지 해결책은 노드 버전을 업그레이드하는 것입니다. 이것은 최신 버그를 일으키고 기존 버그 및 취약점을 수정하므로 가장 좋은 옵션 일 것입니다.
여기서 프로세스는 노드, 운영 체제 등을 설치 한 방법에 따라 다릅니다.
npm 업데이트 패키지
를 사용하려고 할 install
때 여기에 왔으므로 npm install npm -g
동일한 오류로 실패 할 수 있습니다. 이 경우 update
대신 사용하십시오. Nisanth Sojan이 제안한대로 :
npm update npm -g
npm 대안 업데이트
기본 문제를 해결하는 한 가지 방법은 알려진 레지스트라를 사용하고 설치 한 다음 알려진 레지스트라 사용을 중지하는 것입니다. 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
전 세계적으로 저장하려면
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
이 오류 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
호스트를 신뢰하는 경우 체인에서 자체 서명 된 인증서를 내보내고 시스템으로 가져 와서 신뢰할 수있는 것으로 표시 할 수 있습니다.
이는 다음을 통해 인증서를 확인하여 달성 할 수 있습니다 ( example.com
npm repo로 변경 하십시오 npm-debug.log
.
openssl s_client -showcerts -connect example.com:443 < /dev/null
그런 다음 인증서 내용 ( BEGIN
및 사이 END
)을 .crt
파일 로 저장하여 가져옵니다.
리눅스
제안에 따라 다음과 같이 내 보낸 인증서를 /etc/environment
파일 (노드 7.4 이상)에 추가 할 수 있습니다 .
NODE_EXTRA_CA_CERTS=/etc/pki/ca-trust/source/anchors/yourCerts.pem
CentOS
CentOS 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
참고 : 첫 번째 인증서 만 내보내려면 처음에 제거하십시오 g
.
CentOS 6에서 인증서 파일을 (으)로 복사 할 수 있습니다 /etc/pki/ca-trust/source/anchors/
.
우분투 / 데비안
우분투 / 데비안에서 CRT 파일을 복사 /usr/local/share/ca-certificates/
한 다음 다음을 실행하십시오.
sudo update-ca-certificates
맥 OS
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
.
// 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 의 답변을 편집 한 것입니다. 가이드 라인에 "건설적인 수정 사항은 모두 환영하지만 실질적으로 작성하십시오."라고 표시 되어 있지만 "이 수정 사항은 원본 게시물의 내용이 너무 많이 변경되어 게시물의 원래 의미 나 의도를 잃게됩니다." 커뮤니티가 별도의 답변을 선호한다고 생각합니다.
동일한 문제가 있고 homebrew 를 통해 npm을 설치 한 Mac 사용자 :
brew uninstall npm
그때
brew install npm
osx (10.9.1)에서 나를 위해 일합니다.
편집 : brew update
npm을 설치 하기 전에 필요할 수 있습니다 . brew upgrade
홈 브루를 업데이트 한 후 수행 할 수도 있습니다 . 또한 brew doctor
다른 문제가 발생하면 실행 하는 것이 도움이 될 수 있습니다 .
이것을 명령 앞에 두는 것이 효과가있는 것 같습니다 NODE_TLS_REJECT_UNAUTHORIZED=0
. 전의:NODE_TLS_REJECT_UNAUTHORIZED=0 npm ...
노드가 자체 서명 된 인증서를 유효한 것으로 인식하게하는 방법을 알아내는 것이 가장 좋습니다. 위의 엄격한 SSL 제안이 어떤 이유로 든 작동하지 않았습니다. 보안 영향을 이해하고 일시적인 빠른 수정이 필요한 경우 Google에서 오류를 검색하는 동안 임의의 github 문제 에서 찾은 것입니다 .
빠르고 깨끗한 솔루션 (리눅스 테스트) (2014 년 2 월 27 일 피로 후)
npm 제거
npm rm npm -g
npm 설치 (새 URL은 www.npmjs.org 대신 npmjs.org )
curl https://www.npmjs.org/install.sh | sh
팁 : Linux에서 node.js를 설치하는 방법 https://stackoverflow.com/a/22099363/333061
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 install npm -g
그들은를 통해 npm을 업그레이드 할 것을 제안 하지만, 물론 동일한 SELF_SIGNED_CERT_IN_CHAIN 오류가 발생했습니다. 그래서 방금 노드를 업데이트하고 노드와 함께 npm을 업데이트했습니다. 정확한 절차는 처음에 노드를 설치 한 방법에 따라 다릅니다.
인터넷 연결을 확인하고 작동하는지 확인하십시오. node 및 npm이 설치되어 있는지 확인하고 명령 프롬프트에서 다음 명령을 실행하십시오.
npm 제거 -g @ angular / cli
npm 캐시 정리
npm install -g @ angular / cli @ latest
'IT' 카테고리의 다른 글
입력 텍스트 대화 상자 Android (0) | 2020.03.28 |
---|---|
C #에서 일반 인수의 널 또는 기본 비교 (0) | 2020.03.28 |
NumPy 배열에 추가 열을 추가하는 방법 (0) | 2020.03.28 |
자바 스크립트로 부트 스트랩 모달을 숨기는 방법? (0) | 2020.03.28 |
로컬 네트워크에서 유효한 모든 IP 주소 목록을 얻는 방법은 무엇입니까? (0) | 2020.03.28 |