[node.js] nodejs“npm ERR! 코드 SELF_SIGNED_CERT_IN_CHAIN”

저는 nodejs와 npm을 처음 사용합니다. log4js를 설치하려고하는데 이것은 설치 명령입니다.

npm install log4js

Windows 명령 줄에서 이것을 실행하고 있으며 마커가 회전하는 동안 잠시 후 다음 오류가 발생합니다.

npm ERR! Windows_NT 6.3.9600
npm ERR! argv "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "log4js"
npm ERR! node v0.12.0
npm ERR! npm  v2.5.1
npm ERR! code SELF_SIGNED_CERT_IN_CHAIN

npm ERR! self signed certificate in certificate chain
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <http://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     C:\srv\npm-debug.log

http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-morenpm config set ca="" 여기에 제안 된 것처럼 시도했지만 여전히이 오류가 발생합니다.

이 문제를 해결하고 NPM을 설치하려면 어떻게해야합니까?



답변

npm 블로그에 따르면 LTS는이 문제의 영향을받지 않으므로 최신 릴리스 사용을 선호합니다

. 이전 버전에서는 npm에 자체 서명 된 ca 파일이 있고, 연결하는 동안 보안 SSL 모드에서 ca 파일이 사용되며, npm 레지스트리에 업데이트 된 SSL 인증서가 배포되었습니다. 이전 npm의 ca 파일과 호환되지 않으므로 SSL로 인한 연결 오류

그러나이 오류가 발생 하면 아래 단계 중 하나 가 도움이 될 것입니다.
1) npm 버전을 업그레이드하십시오.

npm install npm -g --ca=null

2) 현재 버전의 npm에 내장 된 npm의 ca 대신 노드의 ca를 사용하도록 지시합니다.

npm config set ca=""

3) strict-ssl 모드를 비활성화하여 이전 버전의 오류를 해결할 수도 있지만 보안을 삭제하고 있습니다.

npm set strict-ssl false


답변

Windows 10에서 동일한 문제가 발생했습니다.

Windows powerShell을 열고 다음 명령을 입력하십시오.

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

그런 다음 다음을 사용할 수 있습니다.

npm install [your package]


답변

나는 npm도 처음 사용합니다. 귀하의 링크에 언급 된 명령 외에도 다음을 시도하여 내 문제를 해결했습니다.

  • npm은 strict-ssl을 false로 설정합니다.
  • McAfee를 일시적으로 비활성화

참조 : Azure의 Npm SELF_SIGNED_CERT_IN_CHAIN


답변

위의 Akshay Vijay Jain이 언급했듯이

npm 구성 설정 strict-ssl false

최신 버전을 설치하기 전에 SSL 끄기

그런 다음 최신 버전을 설치하십시오.

npm 설치 -g npm @ latest

설치 성공 !!

명확성을 위해 추가 된 스크린 샷을 참조하십시오.


답변

StrictSsl을 false로 설정하는 것은 옵션이지만 npm 보안을 손상시킵니다. 비활성화하지 않는 것이 좋습니다. 다음 지침은 Shreedhar의 게시물에서 cafile을 사용하는 방법에 대해 자세히 설명합니다. Windows 10 컴퓨터 관점에서 작성되었지만 조정할 수 있습니다.

우리 회사는 프록시를 통해 SSL Inpsection을 사용하므로 최소한 SSL 검사 인증서를 포함해야합니다. 다음 지침은 외부 적으로 도달하는 npm 기능을 사용하려는 컴퓨터에서 최신 웹 브라우저를 사용할 수 있다고 가정합니다.

  1. 명령 콘솔에서 다음을 실행합니다. npm config list
  2. 메트릭 레지스트리 값을 기록하십시오. URL이어야합니다.
  3. URL에 대한 브라우저를 엽니 다. 이 답변을 작성하는 현재 https://registry.npmjs.org/
  4. 사이트에 대한 인증서 정보를 엽니 다. Windows 용 Chrome의 경우 주소 표시 줄의 URL 왼쪽에있는 자물쇠 아이콘을 클릭하고 인증서 옵션을 선택합니다 .
  5. 인증 경로를 검사하십시오. 저에게는 회사 CA와 SSL 검사 인증서가 있습니다.
  6. .cer 또는 .crt 파일로 인코딩 된 Base64로 각 인증서를 다운로드합니다.
  7. 모든 인증서를있는 그대로 하나의 .cer 또는 .crt 파일로 컴파일합니다.
  8. 이 파일을 사용자 폴더에 넣습니다. 네트워크 기반 사용자 폴더가 있지만 로컬 컴퓨터 기반 폴더를 사용하는 것이 좋습니다. 이 파일의 전체 경로를 기록해 둡니다.
  9. 명령 콘솔에서 다음을 실행합니다 npm config set cafile "C:\Local\Path\To\cafile4npm.cer". 8 단계에서 기록한 경로 및 파일 수정.
  10. npm install명령을 실행하십시오 .


답변

cafile하나의 파일에 모든 PEM을 수용하는 설정도 시도 했습니까 ? npm 루트 CA 추가

.npmrc파일 에서 프록시를 사용하는 경우 no_proxy값으로 환경 변수 를 설정하는 것이 좋습니다.<server IP address>


답변

CentOS 및 기타 Linux 배포판에서는 인증 기관 파일을 사용하도록 NPM을 구성해야합니다.

npm config set cafile "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" -g

파일이 존재하고 발생할 수있는 모든 CA 루트 (예 : 회사 프록시)가 포함되어 있는지 확인하십시오.