반응형
1. 개요
HTTPS 통신에서 서버의 인증서를 검증하기 위해서는
신뢰할 수 있는 인증기관(CA, Certificate Authority) 목록이 필요하다.
Node.js는 기본적으로 자체 CA 목록을 내장하고 있으며,
이 목록을 기반으로 서버 인증서를 검증한다.
이 글에서는 Node.js에서 신뢰하는 CA 목록을 확인하는 방법을 정리한다.
2. CA (Certificate Authority)란?
CA는 서버 인증서를 발급하는 기관이다.
대표적인 CA:
- DigiCert
- GlobalSign
- Let's Encrypt
- Sectigo
Node.js는 이러한 CA들을 신뢰 목록으로 가지고 있으며,
이 목록에 포함된 기관이 발급한 인증서만 정상적으로 검증된다.
3. Node.js에서 CA 목록 확인하기
Node.js에서는 tls 모듈을 통해
내장된 CA 목록을 확인할 수 있다.
const tls = require("tls");
console.log(tls.rootCertificates);
결과
- PEM 형식의 인증서 배열이 출력됨
- 각 항목이 하나의 CA 인증서
4. 실제로 어떤 CA가 포함되어 있는가
출력된 인증서를 확인해보면 다음과 같은 CA들이 포함되어 있다:
- DigiCert
- GlobalSign
- Let's Encrypt
- Sectigo
이 CA들이 발급한 인증서는 기본적으로 신뢰된다.
5. Node.js 내부 CA 위치
Node.js의 기본 CA 목록은 내부적으로 다음 파일에 포함되어 있다:
https://github.com/nodejs/node/blob/main/src/node_root_certs.h
이 파일에는 PEM 형식의 인증서들이 하드코딩되어 있으며,
Node.js는 이 목록을 기반으로 TLS 인증서를 검증한다.
Node.js는 실행 시 외부에서 CA를 가져오는 것이 아니라,
빌드 시 포함된 CA 목록을 기준으로 인증서를 검증한다.
또한 이 CA 목록은 Mozilla의 NSS 저장소를 기반으로 생성된다.
6. 시스템 CA를 사용하는 경우
Node.js는 옵션에 따라
운영체제의 CA 목록을 사용할 수도 있다.
NODE_OPTIONS=--use-openssl-ca
이 경우:
- OS의 CA 저장소 사용
- (Linux 기준
/etc/ssl/certs)
7. 왜 중요한가
다음과 같은 상황에서 CA 목록 확인이 필요하다:
- 특정 인증서가 신뢰되지 않는 경우
- 사설 인증서 사용 시
- TLS 오류 디버깅 (
UNABLE_TO_VERIFY_LEAF_SIGNATURE등)
8. 정리
- Node.js는 기본 CA 목록을 내장하고 있다
tls.rootCertificates로 확인 가능하다- 옵션에 따라 OS CA를 사용할 수도 있다
결국 TLS 검증은 “CA 목록에 포함되어 있는가”로 결정된다.
반응형
'Develope > Node.js' 카테고리의 다른 글
| Node.js에서 인증서 오류가 나는 이유와 확인 방법 (0) | 2026.04.15 |
|---|---|
| Node.js Event Loop란 무엇인가? 동작 원리와 setTimeout, setImmediate 차이 (1) | 2026.04.15 |
| Node.js에서 TLS 인증서 검증은 어떻게 동작하는가 (0) | 2026.04.14 |
| Express IP 주소 가져오기 (0) | 2022.09.14 |
| NVM을 이용하여 Node.js 버전 변경 또는 관리하기 (0) | 2021.01.27 |