[node.js] npm 오류! 코드 UNABLE_TO_GET_ISSUER_CERT_LOCALLY

반응 응용 프로그램을 만드는 모든 방법을 시도하고 있습니다. 나는 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>



답변

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

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

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

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


답변

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

노드 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에 대한 검사를 사용하도록 지시하지만 인증서가 발견되면이 인증서도 허용합니다.

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


답변

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

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


답변

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

  • 엄격한 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 설정을 제거하십시오.


답변

저를 믿으십시오.

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


답변

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

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

npm config set strict-ssl=false


답변

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