홈 › 웹 서버 › 07 / 8

nginx HTTPS

섹션 7진행 0 / 8

5. 자주 하는 실수 (Tip)

❌ 실수 1: 개인 키 권한을 644 로 방치한다

권한을 안 바꾸면 서버의 다른 계정도 키를 읽어 인증서를 복제할 수 있습니다. 생성 직후 chmod 600 으로 소유자만 읽게 합니다.

❌ 실수 2: 인증서 체인 순서를 뒤집는다

중간 인증서를 서버 인증서보다 위에 넣으면 일부 클라이언트에서 검증이 실패합니다. 서버 인증서가 항상 맨 위입니다.

❌ 실수 3: TLSv1.0·TLSv1.1 을 남겨둔다

ssl_protocols 에 구버전을 포함하면 다운그레이드 공격에 열립니다. TLSv1.2 TLSv1.3 두 개만 남깁니다.

❌ 실수 4: 80 번 블록을 아예 지운다

리다이렉트 블록을 없애면 http 로 접속한 사용자는 연결 거부만 보고 이유를 모릅니다. 80 번은 남겨 두고 301 리다이렉트만 시킵니다.

❌ 실수 5: 자체 서명 상태에서 HSTS 를 오래 켠다

max-age 를 길게 잡은 뒤 인증서 문제로 http 로 되돌리면, 브라우저가 만료 전까지 https 접속을 강제해 접속 자체가 막힙니다. 인증서가 안정된 뒤에 max-age 를 늘립니다.

❌ 실수 6: nginx -t 없이 reload 한다

설정 파일에 오타가 있으면 reload 가 실패하거나 최악의 경우 서비스가 죽습니다. 반영 전에 항상 문법 검사를 먼저 합니다.

❌ 실수 7: 자체 서명 인증서를 외부에 그대로 노출한다

내부망 전용으로 만든 인증서를 외부 접속 경로에 걸면 사용자가 매번 경고를 봅니다. 외부 노출 구간은 공인 인증서를 씁니다.

❌ 실수 8: 만료 점검을 사람 기억에 맡긴다

만료를 놓치면 서비스 접속이 갑자기 끊깁니다. openssl x509 -enddate 를 정기 점검 스크립트에 넣어 자동으로 확인합니다.

❌ 실수 9: X-Forwarded-Proto 를 안 넘긴다

이 헤더가 없으면 Tomcat 은 항상 http 로 착각해 쿠키 Secure 속성이나 리다이렉트 로직이 어긋납니다. proxy_set_header X-Forwarded-Proto $scheme; 를 빠뜨리지 않습니다.

❌ 실수 10: 개인 키를 저장소에 커밋한다

server.key 를 git 저장소에 올리면 히스토리에서 영구히 지우기 어렵습니다. 키는 서버에서만 생성·보관하고 .gitignore 로 막습니다.