-
Notifications
You must be signed in to change notification settings - Fork 0
NestJS, mkcert CA 인증서 문제해결 방법
자체 서명된 인증서는 브라우저나 HTTP 클라이언트에서 기본적으로 신뢰하지 않기 때문에, NODE_TLS_REJECT_UNAUTHORIZED=0
설정을 통해 SSL 검증을 건너뛰도록 해야 하는 상황이 발생했었습니다.
제가 사용한 mkcert 또한 자체 서명된 인증서로 CA에서 발급된게 아니기에, 기본적으로 신뢰할 수 있는 인증서로 간주되지 않는다고 합니다. 이를 해결하기 위해 로컬 시스템에 자체 서명된 인증서를 신뢰할 수 있는 인증서로 등록할 수 있습니다.
다만, 이는 로컬 테스트 환경에서만 사용하기에 적합합니다.
mkcert
로 발급한 인증서를 Node.js에 SSL 인증서를 신뢰하도록 하기 위해 NODE_EXTRA_CA_CERTS
환경 변수를 설정해야 합니다. 이를 통해 Node.js가 mkcert
의 자체 CA 인증서를 신뢰하게 할 수 있습니다.
1. mkcert
CA 경로 확인
mkcert
로 발급한 인증서의 CA 경로는 다음 명령어로 확인할 수 있습니다:
mkcert -CAROOT
이 명령을 실행하면 mkcert
CA 인증서(rootCA.pem
)가 위치한 경로가 표시됩니다.
-
~/Library/Application Support/mkcert
(macOS) -
~/.local/share/mkcert
(Linux) -
C:\\Users\\<username>\\AppData\\Local\\mkcert
(Windows)
2. NODE_EXTRA_CA_CERTS
환경 변수 설정
NODE_EXTRA_CA_CERTS
환경 변수를 사용하여 Node.js가 mkcert
의 루트 CA 인증서를 신뢰하도록 설정할 수 있습니다. 이 환경 변수는 Node.js가 추가로 신뢰해야 할 CA 인증서를 지정할 때 사용됩니다.
터미널에서 설정하기
로컬 개발 환경에서 터미널에 다음과 같이 입력해 NODE_EXTRA_CA_CERTS
환경 변수를 설정할 수 있습니다.
export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
위 명령을 실행하면, Node.js가 mkcert
로 발급된 SSL 인증서를 신뢰하게 됩니다.
Windows 환경 설정
앞서 설명드린 방법은 mac OS에서 적용되는 방식이며,
Windows에서 NODE_EXTRA_CA_CERTS
환경 변수를 설정하는 방법은 다음과 같습니다.
set NODE_EXTRA_CA_CERTS=C:\\path\\to\\mkcert\\rootCA.pem
위 명령에서 C:\\path\\to\\mkcert\\rootCA.pem
부분을 실제 CA 인증서 경로로 변경해 주세요.
주의사항
- 환경 변수 설정은 터미널 세션마다 적용됩니다. 새로운 터미널 세션을 열 때마다 이 변수를 다시 설정해야 합니다.
- 로컬 환경에서만 사용하고, 배포 환경에서는 Let’s Encrypt와 같은 공인된 인증서를 사용하는 것이 좋습니다.
이렇게 설정하면 httpsOptions
에 mkcert
로 발급한 인증서를 사용하는 NestJS 애플리케이션이 SSL 검증 오류 없이 정상적으로 HTTPS 연결을 유지할 수 있습니다.
web12-MafiaCamp