본 포스트는 내부망에서 별도 Proxy를 거치는 환경에서 Node.js 서버 구성 시 발생하는 SELF_SIGNED_CERT_IN_CHAIN 오류에 대한 원인 및 해결에 대한 글입니다.

 

 

Node.js 서버에서 Http를 생성하여 다른 서버와 통신하려 할 때 아래와 같은 오류가 발생하는 경우가 있습니다.

Error: self signed certificate in certificate chain
    at TLSSocket.onConnectSecure (node:_tls_wrap:1530:34)
    at TLSSocket.emit (node:events:390:28)
    at TLSSocket._finishInit (node:_tls_wrap:944:8)
    at TLSWrap.ssl.onhandshakedone (node:_tls_wrap:725:12) {
  code: 'SELF_SIGNED_CERT_IN_CHAIN'
}

 

위와 같은 경우는 대부분 내부망에서 외부망으로 통신할 때 별도의 Proxy 서버를 두고, 해당 Proxy 서버를 거칠 때 자체 사설 인증서로 통신할 경우에 발생합니다. 클라이언트가 서버와 통신하는 과정에서 신뢰할 수 있는 인증기관에서 발급된 인증서인지를 확인하는 과정을 거칠 때, 자체 서명된 사설 인증서가 인증 체인의 중간에 위치해서 발생하는 오류입니다.

 

테스트 용도로 사설 인증서를 사용하는 것이라면 추후 공인된 인증기관의 SSL로 변경하면 되겠지만 망분리로 인해서 발생하는 오류라면 테스트 환경일 경우에 아래 로직을 한 줄 추가해서 개발합니다.

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';

 

위 소스코드는 허가되지 않은 인증서를 거부하지 않겠다는 의미입니다.

300x250

+ Recent posts