npm 오류! 코드 UNABLE_TO_GET_ISSUER_CERT_LOCALLY


118

반응 응용 프로그램을 만드는 모든 방법을 시도하고 있습니다. 나는 maven을 사용해 보았고 이제 Facebook Incubators의 crate-react-app 빌드 시스템을 시도하고 있습니다.

create-react-app my-appnpm 환경 에서 명령을 실행하려고 할 때 내 개인 시스템에서 문제없이 작동했습니다. 하지만 내 작업 환경에서 동일한 명령을 시도했을 때 명령 프롬프트에서이 오류가 발생했습니다.

npm ERR! node v6.10.2
npm ERR! npm  v3.10.10
npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY

npm ERR! unable to get local issuer certificate
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

1
나는 또한 sudo내가 달릴 때 사용할 수 없었다 npm install aws-sdk. 실행으로 sudo npm install aws-sdk인해이 오류가 발생했습니다.
Kyle Bridenstine

답변:


296

인터넷 검색의 빠른 해결책은 npm config set strict-ssl false운 좋게도 작동했습니다. 그러나 내 작업 환경의 일부로 strict-ssl 플래그를 false로 설정하도록 제한되어 있습니다.

나중에 안전하고 작동하는 해결책을 찾았습니다.

npm config set registry http://registry.npmjs.org/  

이것은 완벽하게 작동했으며 Happy Hacking!strict-ssl 플래그를 false로 설정하지 않음 으로써 성공 메시지 를 받았습니다 .


2
나도 NPM 저장소의 HTTP 버전 ( 레지스트리 .npmjs.org와 반대 ) 을 사용하도록 되돌 렸습니다. 내 작업 프록시가 문제를 일으켰 기 때문입니다 (MITM 역할을하여 인증 확인 문제를 야기 함). 언젠가는 알아낼 것입니다. 인증서 문제를 해결했지만 패키지를 다운로드해야했습니다.
Robert Dundon 2017 년

1
나는 이미이 설정이 있다고 생각했지만 자세히 보았을 때 http ( registry.npmjs.org ) 대신 https가 있습니다 . http로 변경하고 작동했습니다.
Ashish Bajpai

나를 위해 나는 이것을했지만 sudo내가 달릴 때도 사용할 수 없었 습니다 npm install aws-sdk. 실행으로 sudo npm install aws-sdk인해이 오류가 발생했습니다.
Kyle Bridenstine 18-06-06

내가 달릴 수 있도록이 게시물에 표시 같은 오류가 발생했다 npm config set strict-ssl false하고 npm config set registry http://registry.npmjs.org/ 있지만 실행할 때 내가 여전히 오류가 발생했다 sudo npm install aws-sdk하지만 난 삭제 된 경우 sudo부분을 그냥 실행 npm install aws-sdk이했다.
Kyle Bridenstine

나를 위해 설정 외에는 npm config set strict-ssl false작동하지 않습니다. 나는 이것이 뭔가 느낌 node.jsnpm그들에 대한 고칠 수없는 경우 주위에 적절한 작업과 팀에 보일 것입니다 및 문서.
RinoTom

23

회사에서 특정 트래픽의 암호를 해독하고 인증서로 다시 암호화합니다 (키 체인 또는 신뢰할 수있는 루트 인증서에 이미있을 수 있음).

노드 7 이상을 사용하는 경우이 수정 사항이 node 및 node-gyp과 호환되는 것으로 나타났습니다 (Windows의 경우 다르게 수행해야하지만 기본적으로이 환경 변수를 추가하면됩니다).

export NODE_EXTRA_CA_CERTS="absolute_path_to_your_certificates.pem" (Windows에서는 따옴표를 제거해야 할 수 있습니다-주석 참조)

pem 파일에는 여러 인증서가있을 수 있습니다. https://nodejs.org/api/cli.html#cli_node_extra_ca_certs_file

인증서가 적절한 pem 형식인지 확인하십시오 (리터럴이 아닌 실제 줄 바꿈이 필요합니다 \n)

상대 경로 ( .또는 ~) 와 함께 작동하도록 할 수없는 것 같습니다.

이 수정 사항은 기본적으로 npm 및 node-gyp에 일반 CA에 대한 검사를 사용하도록 지시하지만 인증서가 발견되면이 인증서도 허용합니다.

이상적으로는 시스템의 신뢰할 수있는 인증서를 사용할 수 있지만 안타깝게도 그렇지 않습니다.


큰. 자세한 설명에 찬성 투표하십시오. 더 잘 이해할 수 있도록 도와주었습니다. 좋은 정보.
vissu

2
Windows에서는 따옴표를 제거하지 않으면 경로가 작동하지 않았습니다.
Chris Anderson

1
BlueCoat로 인해이 문제가 발생하며 몇 개월마다 답변을 참조해야합니다. 엄격한 SSL을 비활성화하는 것보다 확실히 더 나은 솔루션입니다. 감사합니다!
Jordan Gray

1
Windows에서 .pem 파일을 어디에서 찾을 수 있습니까? 전체 하드 디스크에서 pem 파일을 검색하여 Windows \ System32 내부에서 몇 가지 수준을 찾았습니다. 하지만 작동하지 않습니다
Sanchit Jain

10

NPM repo URL을 HTTP로 변경하면 빠른 수정으로 작동하지만 HTTPS를 사용하고 싶었습니다.

제 경우에는 고용주 (ZScaler)의 프록시가 문제를 일으켰습니다 (MITM 역할을하여 인증 확인 문제를 야기 함).

나는 이것과 Git (HTTPS를 통한 GitHub 저장소 복제에 동일한 문제가 있음)에 도움이 되는 스크립트 를 잊고 내 사용을 위해 포크했습니다.

기본적으로 git에 대해 다음을 수행합니다.

git config --global http.proxy http://gateway.zscaler.net:80/
git config --system http.proxy http://gateway.zscaler.net:80/

노드의 proxy=http://gateway.zscaler.net:80/경우 끝에 추가 됩니다.c:\Users\$USERNAME\npm\.npmrc

그것은 나를 위해 문제를 해결했습니다.


2
회사가 구성되어있는 ZS 클라우드를 확인할 수 있습니다. 기본적으로 ip.zscaler.com클라우드 이름을 확인 하고 URL에서 설정합니다. 예 : 표시되는 경우 zscalertwo.net다음 URL로 gateway.zscalertwo.net
바꿉니다

6

모든 솔루션을 시도한 후 찾을 수있는 :

  • 엄격한 SSL 끄기 : npm config set strict-ssl=false
  • https 대신 http로 레지스트리 변경 : npm config set registry http://registry.npmjs.org/
  • 내 cafile 설정 변경 : npm config set cafile /path/to/your/cert.pem
  • 알 수없는 CA 거부 중지 : set NODE_TLS_REJECT_UNAUTHORIZED=0

지금 가장 잘 작동하는 것처럼 보이는 솔루션 은 기존 CA를 .npmrc 파일의 cafile 옵션으로 바꾸지 않고 확장하는 NODE_EXTRA_CA_CERTS 환경 변수 를 사용하는 것입니다. 터미널에 다음을 입력하여 설정할 수 있습니다.NODE_EXTRA_CA_CERTS=path/to/your/cert.pem

물론이 변수를 매번 설정하는 것은 성 가실 수 있으므로 터미널을 열 때마다 설정되도록 bash 프로필에 추가했습니다. 아직 ~/.bash_profile파일 이없는 경우 새로 만듭니다. 그런 다음 해당 파일 끝에 export NODE_EXTRA_CA_CERTS=path/to/your/cert.pem. 그런 다음 .npmrc에서 cafile 설정을 제거하십시오.


네 번째 옵션은 매력이었습니다. process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0;
tomdemuyt

5

저를 믿으십시오.

    npm config set registry http://registry.npmjs.org/  

이 링크가 질문에 답할 수 있지만 여기에 답변의 필수 부분을 포함하고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 무효화 될 수 있습니다. 질문에 답변하는 방법에 대한 자세한 내용은 답변 방법을 참조하십시오
Artog

4

같은 오류가 발생했습니다. SSL 인증서와 관련된 것 같습니다. 공개 패키지에 NPM을 사용하는 경우 (HTTPS 보안이 필요하지 않음) 다음 명령을 사용하여 엄격한 SSL 키 유효성 검사를 끌 수 있습니다.

공개적으로 사용 가능한 몇 가지 패키지를 한 번만 설치하려는 경우 가장 간단한 수정일 수 있습니다.

npm config set strict-ssl=false

5
이렇게하는 것은 내재 된 위험이 있습니다. 악의적 인 중간자 공격의 피해자 인 경우 다운로드 할 때 패키지를 수정할 수 있습니다.
Alex KeySmith

@AlexKeySmith 당신이 맞습니다. 그러나 확률은 매우 낮습니다. 이것은 일부에게는 유일한 옵션 일 수 있습니다. 경고 Emptor
Jason Geiger

1

npm을 업데이트하려고 할 때이 오류가 발생했지만 AWS Linux의 yum에서 정말 오래된 버전 (1.3.6!)이 설치되어있었습니다. 새로운 npm 버전을 수동으로 설치할 수 있었고 모든 것이 해결되었습니다.


0

아래 코드는 나를 위해 완벽하게 작동했습니다.

npm config set registry http://registry.npmjs.org/  

0

제 경우에는 어느 시점에서 프로젝트 용 인증서를 사용하도록 전역 구성을 설정했습니다.

npm config list

/path/to/global/.npmrc
NODE_EXTRA_CA_CERTS = "./certs/chain.pem"

파일을 열고 줄을 제거하고 npm install다시 작업했습니다.


0

아래 오류가 발생했습니다.

PS C : \ Users \ chpr \ Documents \ GitHub \ vue-nwjs-hours-tracking> npm install vue npm ERR! 코드 UNABLE_TO_GET_ISSUER_CERT_LOCALLY npm ERR! errno UNABLE_TO_GET_ISSUER_CERT_LOCALLY npm ERR! https://registry.npmjs.org/vue에 대한 요청 실패, 이유 : 로컬 발급자 인증서를 얻을 수 없습니다.

npm 오류! 이 실행의 전체 로그는 npm ERR!에서 찾을 수 있습니다.
C : \ Users \ chpr \ AppData \ Roaming \ npm-cache_logs \ 2020-07-29T03_22_40_225Z-debug.log PS C : \ Users \ chpr \ Documents \ GitHub \ vue-nwjs-hours-tracking> PS C : \ Users \ chpr \ Documents \ GitHub \ vue-nwjs-hours-tracking> npm ERR!
C : \ Users \ chpr \ AppData \ Roaming \ npm-cache_logs \ 2020-07-29T03_22_40_225Z-debug.log

아래 명령으로 문제가 해결되었습니다.

npm config set strict-ssl false
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.