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과 함께 제공됩니다.한 가지 해결책은 노드 버전을 업그레이드하는 것입니다.이 방법은 최신 정보를 제공하고 기존 버그와 취약성을 수정하기 때문에 가장 적합한 옵션일 수 있습니다.
여기서 프로세스는 노드, 운영 체제 또는 기타를 설치한 방법에 따라 달라집니다.
업데이트
당신이 아마도 여기에 왔을 것이라는 것은install
npm 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.js 및 Npm을 설정하는 방법
호스트를 신뢰하는 경우 체인에서 자체 서명된 인증서를 내보내고 시스템으로 가져올 수 있으므로 인증서를 신뢰된 것으로 표시할 수 있습니다.
인증서를 확인하여 다음을 수행할 수 있습니다(변경).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/yourCerts.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을 업그레이드해야 합니다.
// 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 update
npm 파일을 하기 전에 하십시오.또한 다음을 수행할 수 있습니다.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 -g
SELF_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을 얻는 데 어려움을 겪고 있는 사람들을 위해:
Details(세부 정보)를 클릭한 다음 내보내고 (*.pem, *.crt) 파일로 저장합니다.
- 다음 이 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
'programing' 카테고리의 다른 글
stdin 입력이 비어 있는 경우 xargs 명령을 무시하는 방법은 무엇입니까? (0) | 2023.05.20 |
---|---|
npm을 이전 버전으로 다운그레이드 (0) | 2023.05.20 |
디버깅하는 동안 식을 평가할 수 없습니다. (0) | 2023.05.20 |
Postgres를 사용하여 한 번에 3개의 테이블에 데이터 삽입 (0) | 2023.05.20 |
Gmail을 통해 .NET으로 이메일 보내기 (0) | 2023.05.20 |