nodejs“npm ERR! 코드 SELF_SIGNED_CERT_IN_CHAIN”


79

저는 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을 설치하려면 어떻게해야합니까?



websense라는 회사에서 설치 한 제품으로 인해이 문제가 발생했습니다. 인증서를 탈취했습니다. 의 제거는 virus문제 해결
BozoJoe

답변:


179

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


1
내 문제도 해결했습니다. 모든 나는 ;-) 슈퍼 사용자로 실행해야
byJeevan

@geoidesic 그것은 나를 위해 도커 파일 내에서 작동했습니다. npm을 설치하기 전에 RUN으로이 명령을 시도하십시오.
Deepak Tekchandani

1
이것은 안전하지 않은 접근 방식이므로 MITM 공격에 취약합니다. 적절한 해결책은 사용 된 실제 인증서를 찾아 npm cafile에 추가하는 것입니다.
HA

3
이 문제가 해결되었습니다. npm set strict-ssl false
Tarun

1
@AkshayVijayJain 내 npm 버전은 6.13.4
Tarun

52

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

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

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

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

npm install [your package]

5
이것은 받아 들여진 대답이어야합니다. strict-ssl을 false로 설정하는 것은 위험합니다. 이 두통을 해결 해주셔서 감사합니다.
jarodtaylor 19

이 cmd를 실행하는 오류 게시물이 계속 표시됩니다.
마니 쿠마

14

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

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

참조 : Azure의 Npm SELF_SIGNED_CERT_IN_CHAIN


3
SSL을 비활성화하는 것이 답이되어서는 안됩니다. ...이에 대한 몇 가지 해결 방법이 있어야합니다
앤드류 Landsverk

9
@AndrewLandsverk 제한적인 회사 방화벽 뒤에있는 경우입니다.
Cloxure


5

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명령을 실행하십시오 .

도커 이미지를 사용한 적이 없지만 도움이 될 수 있습니다. 수신 한 오류의 세부 사항은 무엇입니까?
gregsonian 19

추가 세부 사항은 없습니다. OP의 제목과 동일한 오류입니다.
geoidesic

이 부분은 어떻게하나요? .cer 또는 .crt 파일로 인코딩 된 Base64로 각 인증서를 다운로드합니다. 인증 경로를 열면 다운로드 할 수있는 옵션이 없습니까? 올바르게 설치해야합니까? 내 문제는 실제 서명되지 않은 인증서가 node_modules에 존재한다는 것입니다.
JWP

고마워. npm config list를 실행하면 cafile = ... 항목이있는 전역 / usr / local / etc / npmrc가 표시되어이 답변을 찾을 때까지 하루를 망쳤습니다. 고마워.
HaVonTe

@JohnPeters URL 주소 표시 줄 왼쪽에있는 자물쇠 아이콘을 클릭하면 인증서를 볼 수있는 옵션이 있어야합니다. Windows 10에서 팝업 창에는 일반, 세부 정보 및 인증 경로의 3 개 탭이 있습니다. 인증 경로 탭에는 사용자와 서버 간의 모든 인증서가 표시되지만 세부 정보 탭에서 파일을 다운로드 할 수 있습니다. 윈도우 10에서 버튼을 ... 파일에 복사를하다
gregsonian

2

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

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


2

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

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

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



0

2014 년 2 월 27 일부터 npm은 더 이상 자체 서명 된 인증서를 지원하지 않습니다 . npm에서 권장하는 다음 옵션은 다음 중 하나를 수행하는 것입니다.

npm 버전 업그레이드

npm install npm -g --ca=""

-또는-

알려진 레지스트라를 사용하려면 현재 버전의 npm에 알립니다.

npm config set ca ""

업데이트 : npm은 SELF_SIGNED_CERT_IN_CHAIN ​​및 npm 에 대한 추가 도움말 을 다른 환경에 특화된 더 많은 솔루션 과 함께 게시했습니다.

여기에서 더 많은 것을 읽으 십시오


0

위의 답변 중 어느 것도 내 상황에 도움이되지 않았습니다. 범인은 6.0.1 이전의 패키지 에이전트 기반으로 밝혀졌습니다. 실제로 소유자는 패키지의 테스트 폴더에 자체 서명 된 인증서를 발송하는 것을 인정했습니다. 이로 인해 -D 및 -g 재설치가 강제되었지만 문제는 여전히 발생합니다.

* .pem에 대한 node_modules 폴더를 검색하여이 인증서를 찾았습니다.

내 말을 듣기 위해 npm 캐시를 얻는 중입니다. 물론 내가 더미 맞지?

추가 결과를 다시 게시하겠습니다.

솔루션을 찾았습니다.

2020 년 7 월 7 일

Angular 애플리케이션은 오늘 8.3에서 10.0으로 업그레이드되었습니다. 뭔지 맞춰봐? 오류가 사라졌습니다. 근본 원인은 누군가가 서명되지 않은 인증서를 게시하여 NPM 모듈 라이브러리에 너무 깊숙이 들어간 것입니다. NPM 6.15에도 적용되었습니다!


0

나는 여기에서 많은 솔루션을 시도했지만 실제로는 나를 위해 일하지 않았습니다. npm 업데이트를 시도했지만 시간 초과 (레지스트리가 http://registry.npmjs.org/ 로 설정된 경우 ) 또는 403 Forbidden responce (레지스트리가 http s : //registry.npmjs.org/ 로 설정된 경우 )가 발생했습니다.

결국, 내 문제가 프록시 배후에 의한 것을 realsing, 무엇을 했다 결국 나를 위해 일을했다 :

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

(크레딧 : https://stackoverflow.com/a/12832637/4191296 )


0

TLS 연결에 대한 인증서 유효성 검사를 비활성화 할 수 있습니다.

NODE_TLS_REJECT_UNAUTHORIZED=0 npm install puppeteer


0

Docker 빌드를 통해 실행할 때 동일한 오류가 발생했습니다. 그러나 Powershell 실행에는 오류가 없습니다. 그런 다음 위에서 제안한대로 다음과 같이 dockerfile을 수정했습니다.

npm config set ca = ""실행

RUN npm set strict-ssl false

이것은 인증서 체인 문제를 해결했습니다.


-1

Node js와 angular cli를 다시 설치했습니다. 작동하기 시작했습니다!


1
이 링크는 질문에 대답 할 수 있지만, 여기에 해답의 본질적인 부분을 포함하고 참조에 대한 링크를 제공하는 것이 좋습니다
Prathamesh 더
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.