티스토리 뷰


여러가지 개인 토이 프로젝트를 가지고 웹주소를 만들어주고 있었는데 당연히 도메인 한개가지고 서브 도메인으로 만들어주는 중이었다. 뭐 이런식이었다. 

 

루트 도메인 서브도메인
도메인.kr  
  [서브1].도메인.kr
  [서브2].도메인.kr
  [서브3].도메인.kr

 

그런데 개인 토이 프로젝트라서 굳이 https를 적용할 필요가 없어서 그냥 http로 사용하려고 하는데 브라우저로 접속하면 자꾸 307 리다이렉트가 되는 것이었다. 

 

메세지는 개발자 도구에서 확인하면 아래처럼 나오게 된다. 

 

Status Code: 307 Internal Redirect

 

보다보니 좀 이상했다. 내가 의도적으로 웹서버에 ssl 리다이렉트를 걸게 되면 보통 301 redirect로 표시가 되는데 307은 낯설었기 때문이다. 

 

처음에는 이상해서 내 웹서버에 저런 설정을 한적이 있었나? 생각을 했었는데 처음 생성하는 서비스 포트에 설정을 할수 있을리 만무했다. 웹서비스 포트를 방금 생성했는데 그 이전에 리다이렉트 설정을 할수 없을테니까. 좀 더 구글링을 하다보니 답을 얻었는데 힌트는 이미 응답헤더에 있었다. 

 

Response Header
Non-Authoritative-Reason: HSTS

그럼 Non-Authoritative-Reason: HSTS 란 무엇인가?

 

"Non-Authoritative-Reason: HSTS"는 HTTP 응답 헤더 중 하나입니다. 이 헤더는 서버에서 클라이언트로 보내지며, Strict Transport Security (STS)라고도 알려진 HTTP Strict Transport Security (HSTS) 기능에 대한 클라이언트의 요청이 비인가된 것임을 나타냅니다.
STS는 HTTPS를 통해 통신하는 웹 사이트를 보호하기 위한 보안 메커니즘 중 하나입니다. STS를 활성화하면, 브라우저는 서버로부터 STS 헤더를 수신하면, 향후 일정 기간 동안 (보통 6개월에서 1년) 이 도메인의 모든 요청을 HTTPS로만 보내도록 강제합니다.
"Non-Authoritative-Reason: HSTS"는 STS 기능이 활성화되어 있지만, 이 요청이 서버의 인증서가 아닌 중개 인증서 (Intermediary Certificate Authority)를 통해 중계되었기 때문에 해당 요청이 비인가된 것임을 알리는 것입니다. 중개 인증서는 SSL/TLS 인증서를 중개하는 인증 기관입니다.
이 메시지는 보안상의 이유로 브라우저가 자동으로 처리하기 때문에, 대개 사용자가 신경쓰지 않아도 됩니다. 그러나, 이 메시지가 지속적으로 발생할 경우, 인증서 구성 및 SSL/TLS 구성 등과 관련된 문제가 있는지 확인하는 것이 좋습니다.

 

쉽게 이해하면 HSTS ( HTTP Strict Transport Security ) 기능이 활성화되어있어서 HTTP 요청이 HTTPS로 리다이렉트 되었다고 생각하면 된다

 

이 설정은 메인 도메인에서 하위 도메인까지 강제할 수 있는 옵션을 제공하는데 아래와 같다.

 

Strict-Transport-Security : max-age=31536000 ; includeSubDomains

 

결국 max-age=31536000 를 통해 1년 동안 includeSubDomains 지시자로 현재 도메인과 모든 서브도메인을 포함하여 https로 전송하도록 강제 된다. 내가 사용했던 메인 도메인은 블로그 서비스를 이용하게 되어있는데 여기에 이 HSTS 헤더가 달려서 내려오고 있었다. 

 

그래서 "Non-Authoritative-Reason: HSTS" 이 헤더를 만나게 되면 현재 도메인이나 루트 도메인에서 이 "Strict-Transport-Security : max-age=31536000 ; includeSubDomains" 헤더가 내려온 적이 있었구나 생각하면 되겠다. 


그래서 Http 307 Redirect 에러 해결 방법은? 

근본적인 에러 해결 방법은 1. 웹서버에서 "Strict-Transport-Security : max-age=31536000 ; includeSubDomains" 헤더를 지워주면 된다. 그렇지 못하다면 2. 임시적인 에러 해결 방법으로 메인 도메인이든 서브 도메인이든 브라우저 hsts 설정에서 도메인을 제거해주면 접속이 가능해진다. 

 

브라우저에서

 

chrome://net-internals/#hsts

 

를 접속 한 다음에 "Delete domain security policies" 옵션을 찾아서 접속하려는 도메인을 입력하고 hsts 정책을 삭제해주면 정상적으로 접속이 된다. 😐

 


댓글
최근에 올라온 글
최근에 달린 댓글