Skip TLS verification for local dev

자체 서명 인증서를 쓰는 로컬 개발 서버에 접속하기 위해 TLS 인증서 검증을 건너뛰는 레시피입니다. 반드시 개발 환경에서만 사용하세요.

개요

자체 서명 인증서를 쓰는 로컬 개발 서버에 접속하기 위해 TLS 인증서 검증을 건너뛰는 레시피입니다. 반드시 개발 환경에서만 사용하세요.

코드로 보기

# -k / --insecure skips certificate verification. DEV ONLY.
curl -k https://localhost:8443/health

# better: trust a specific local CA instead of disabling checks
curl --cacert ./dev-ca.pem https://localhost:8443/health
import requests

# verify=False disables checks (dev only) and warns loudly
res = requests.get('https://localhost:8443/health', verify=False)

# preferred: point at your local CA bundle
# res = requests.get(url, verify='./dev-ca.pem')
// Node: env var disables TLS checks process-wide. DEV ONLY.
// NODE_TLS_REJECT_UNAUTHORIZED=0 node app.js

// preferred: add your dev CA instead of disabling everything
// NODE_EXTRA_CA_CERTS=./dev-ca.pem node app.js

설명

경고(중요): `curl -k`, `requests`의 `verify=False`, Node의 `NODE_TLS_REJECT_UNAUTHORIZED=0`은 인증서 검증을 완전히 끕니다. 이 상태에서는 중간자 공격(MITM)을 탐지할 수 없으므로 실서비스·CI·컨테이너 이미지에 절대 넣지 마세요. 운영 코드에 남은 `verify=False`는 심각한 보안 결함입니다.

더 나은 방법은 검증을 끄는 대신 신뢰할 CA를 추가하는 것입니다. curl은 `--cacert`, `requests`는 `verify='<ca.pem>'`, Node는 `NODE_EXTRA_CA_CERTS`로 로컬 CA를 지정하면, 자체 서명 인증서를 쓰면서도 검증은 그대로 유지할 수 있습니다.

로컬 개발이라면 `mkcert` 같은 도구로 OS 신뢰 저장소에 등록되는 유효한 로컬 인증서를 만드는 것이 가장 깔끔합니다. 그러면 어떤 검증도 끌 필요가 없어 개발과 운영의 동작이 동일해집니다.

관련 헤더

관련 상태코드