크롬 HSTS(Strict-Transport-Security) 해제 방법 알아보기

크롬 HSTS(Strict-Transport-Security) 해제 방법 알아보기

D
dongAuthor
5 min read

크롬에서 HSTS 설정을 비활성화하는 방법을 단계별로 알아보세요. ‘연결이 비공개’ 오류 해결 및 로컬 개발 환경 문제를 해결하는 팁을 제공합니다.

가끔 로컬 환경에서 개발하거나 특정 사이트를 디버깅할 때, '연결이 비공개로 설정되어 있지 않습니다’라는 메시지와 함께 접속이 차단되는 경험을 해보셨을 겁니다. 이 문제의 주범 중 하나가 바로 HSTS(HTTP Strict Transport Security) 정책인데요. 보안을 위해 꼭 필요한 기능이지만, 개발 과정에서는 잠시 꺼두어야 할 때가 있습니다.

이 글에서는 HSTS가 무엇인지 간단히 알아보고, 크롬에서 이 설정을 비활성화하는 여러 가지 방법을 단계별로 쉽고 명확하게 안내해 드립니다. 이 가이드를 통해 HSTS 관련 오류를 말끔히 해결하고 개발 효율을 높여보세요!

HSTS란 무엇이며 왜 비활성화해야 할까?

sequenceDiagram
    participant User as 🧑 사용자 (브라우저)
    participant Server as 🌐 웹 서버
    participant Attacker as 🚫 중간자 공격자 (MITM)

    Note over User,Server: ① 사용자가 HTTPS로 사이트에 처음 접속
    User->>Server: HTTPS 요청 (GET https://example.com)
    Server-->>User: 응답 + Strict-Transport-Security 헤더
(max-age=31536000) Note over User: ② 브라우저가 HSTS 정책을 저장
(1년 동안 HTTPS만 허용) User-x Attacker: ❌ HTTP로 접속 시도 차단 (중간자 공격 방지) User->>Server: ✅ 이후 모든 요청은 HTTPS로만 전송 Server-->>User: 안전한 응답 반환

HSTS는 웹 브라우저가 특정 웹사이트와 통신할 때, 모든 통신을 암호화된 HTTPS 프로토콜로만 강제하도록 하는 웹 보안 정책입니다. 웹 서버가 브라우저에 "앞으로 나와 통신할 때는 무조건 HTTPS만 사용해!"라고 알리는 특별한 HTTP 헤더를 보내는 방식으로 작동하죠. 이를 통해 중간자 공격(Man-in-the-Middle Attack)과 같은 보안 위협을 효과적으로 방지할 수 있습니다.

하지만 이런 강력한 보안 기능이 개발자에게는 걸림돌이 될 수 있습니다. 예를 들어, HTTPS 설정이 필수가 아닌 로컬 개발 환경에서 테스트를 진행할 때 HSTS 정책 때문에 접속이 강제로 차단될 수 있습니다. 이럴 때는 원활한 테스트와 디버깅을 위해 일시적으로 HSTS를 비활성화할 필요가 있습니다.

크롬에서 HSTS를 비활성화하는 방법

크롬에서 HSTS 설정을 비활성화하는 몇 가지 효과적인 방법이 있습니다. 가장 일반적인 방법부터 차근차근 따라 해보세요.

1. chrome://net-internals를 이용한 설정 삭제

chrome://net-internals#hsts에서 Domain을 Delete하는 모습

가장 확실하고 직접적인 방법입니다. 크롬의 내부 설정 페이지에 접근해 특정 도메인에 대한 HSTS 정책을 삭제할 수 있습니다.

  1. 크롬 주소창에 chrome://net-internals/#hsts를 입력하고 엔터를 누릅니다.
  2. Delete domain security policies 섹션을 찾습니다.
  3. Domain 입력 필드에 HSTS 설정을 삭제하고 싶은 도메인 주소(예: example.com)를 입력합니다.
  4. 오른쪽에 있는 Delete 버튼을 클릭합니다.

이제 해당 도메인에 대한 HSTS 설정이 삭제되었습니다. 확인을 위해 Query HSTS/PKP domain 섹션에서 동일한 도메인을 조회했을 때 "Not found"라고 나오면 성공입니다! :)

2. 크롬 캐시 및 쿠키 삭제

chrome://settings 에서 인터넷 사용 기록 삭제 모달을 켠 모습

net-internals 설정으로 해결되지 않는다면, 브라우저 캐시에 HSTS 정보가 남아있을 수 있습니다.

  1. 크롬 설정(chrome://settings)으로 이동합니다.
  2. ‘개인 정보 보호 및 보안’ 메뉴에서 '인터넷 사용 기록 삭제’를 클릭합니다.
  3. '기간’을 '전체 기간’으로 설정합니다.
  4. '쿠키 및 기타 사이트 데이터’와 ‘캐시된 이미지 및 파일’ 항목을 체크한 후 ‘인터넷 사용 기록 삭제’ 버튼을 누릅니다.

이 방법은 HSTS뿐만 아니라 다른 웹사이트의 로그인 정보나 데이터도 함께 삭제되니 주의해서 사용해 주세요.

3. 시크릿 모드 사용하기

chrome 시크릿 모드 윈도우

가장 간단한 임시 해결책입니다. 시크릿 모드는 확장 프로그램의 영향을 받지 않고 캐시나 쿠키를 사용하지 않기 때문에 HSTS 정책이 적용되지 않는 경우가 많습니다.

페이지를 시크릿 모드(단축키: Ctrl+Shift+N 또는 Cmd+Shift+N)에서 열어보세요. 만약 시크릿 모드에서 정상적으로 접속된다면, 기존 브라우저의 확장 프로그램이나 캐시가 문제의 원인일 가능성이 높습니다.

4. 공유기(라우터) 재설정

만약 위 방법들이 모두 통하지 않고 ‘연결이 비공개로 되어있습니다’ 오류가 지속된다면, 사용 중인 Wi-Fi 공유기의 DNS 설정이 변조되었을 가능성도 있습니다. 이를 '파밍’이라고 부르기도 하는데요.

공유기 뒷면이나 하단에 있는 리셋(Reset) 버튼을 10초 정도 길게 눌러 초기화해 보세요. 만약 문제가 계속된다면 공유기 제조사 고객센터에 문의하여 펌웨어를 재설치하는 것이 좋습니다.

제한 사항 및 중요 고려사항

HSTS를 비활성화하기 전에 반드시 알아두어야 할 점들이 있습니다.

Preloaded 도메인

구글은 hstspreload.org라는 리스트를 통해 특정 도메인들을 크롬 브라우저 자체에 내장합니다. 이 'Preload 리스트’에 포함된 도메인(예: google.com, facebook.com)은 net-internals에서 설정을 삭제해도 HSTS가 비활성화되지 않습니다. 해당 도메인이 Preload 리스트에 있는지 확인하려면 HSTS Preload List 사이트에서 도메인을 직접 조회해볼 수 있습니다.

보안상의 위험

HSTS는 중요한 보안 기능입니다. 개발이나 디버깅 같은 특수한 목적을 위해서만 일시적으로 비활성화하고, 작업이 끝나면 반드시 다시 활성화하는 습관을 들이는 것이 중요합니다. HSTS를 비활성화한 상태로 보안이 검증되지 않은 네트워크에서 웹서핑을 하는 것은 보안 위협에 노출될 수 있습니다.

일반적인 문제 해결

HSTS 비활성화 과정에서 다른 오류가 발생할 수도 있습니다.

  • 인증서 오류: 오류 메시지에 HSTS, 개인 정보 보호 인증서 또는 잘못된 이름과 관련된 내용이 언급된다면, PC의 날짜와 시간이 올바르게 설정되어 있는지 확인해 보세요. 또한, 백신 프로그램의 ‘HTTPS 보호’ 또는 ‘HTTPS 검사’ 기능이 크롬의 보안 기능과 충돌을 일으킬 수 있으니 잠시 비활성화하고 테스트해볼 수 있습니다.
  • 확장 프로그램 충돌: 시크릿 모드에서 문제가 해결되었다면, 설치된 크롬 확장 프로그램 중 하나가 원인일 가능성이 높습니다. chrome://extensions 페이지에서 확장 프로그램을 하나씩 비활성화하며 어떤 것이 문제를 일으키는지 찾아보세요.

개발 효율과 보안, 두 마리 토끼 잡기

지금까지 크롬에서 HSTS 정책을 비활성화하는 다양한 방법을 살펴보았습니다. 대부분의 경우 chrome://net-internals 설정을 통해 간단히 해결할 수 있지만, 캐시나 네트워크 문제 등 복합적인 원인이 있을 수도 있습니다.

HSTS는 웹을 더 안전하게 만드는 중요한 기술입니다. 하지만 개발자에게는 때때로 유연한 대처가 필요하죠. 오늘 배운 내용을 잘 기억하셔서 개발 중 HSTS 관련 문제에 부딪혔을 때 빠르고 정확하게 해결하시길 바랍니다. 작업이 끝나면 보안을 위해 설정을 원래대로 되돌리는 것도 잊지 마세요!