브라우저 열린 HSTS는 HTTPS 액세스를 뛰어 강요하자

브라우저 열린 HSTS는 HTTPS 액세스를 뛰어 강요하자

소스  https://www.cnblogs.com/luckcs/articles/6944535.html

 

사용자가 수동으로 사이트의 HTTP 주소를 입력하거나, 다른 장소에서 귀하의 사이트에 HTTP 링크를 클릭하면 방송국의 웹 사이트 HTTPS 후, 종종 HTTPS 서비스를 사용하도록 서비스 측면 삼공 일 삼공이 점프에 의존하고 있습니다. 첫 번째 HTTP 요청하여 HTTPS가 납치를 다운 그레이드 구성, 서버에 도달 할 수없는 요청의 결과로 납치 될 가능성이 높습니다. 이 문제는 현재 HSTS (HTTP 엄격한 운송 보안, RFC6797)에 의해 해결 될 수있다.

HSTS 프로필

HSTS (HTTP 엄격한 전송 보안) IETF 인터넷 엔지니어링 인터넷 보안 정책 메커니즘을 발표하는 국제 조직이다. HSTS 사이트는 항상 수동으로 세션 하이재킹의 위험을 최소화하기 위해 URL 주소 표시 줄에 암호화 주소를 입력하도록 요구하지 않는 사이트의 브라우저 HTTPS 암호화 된 버전에 연결 될 수 있도록하는 전략을 채택한다.

HSTS 응답 헤더 형식

Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]
  • 최대 사용 기간은 지정된 시간 내에 브라우저를 얘기하는 데 사용되는 초에, 사이트가 HTTPS 프로토콜을 통해 액세스 할 수 있어야합니다. 즉, 웹 사이트의 HTTP 주소, 브라우저는 로컬 후 HTTPS 요청을 다시는 보내 교체해야합니다있다.

  • includeSubDomains는 선택적 매개 변수가 지정되고 있으면,이 쇼는이 사이트의 모든 하위 도메인은 HTTPS 프로토콜을 통해 액세스 할 수 있어야합니다.

  • 프리로드, 선택적 매개 변수, 도메인 이름 브라우저의 목록은 HTTPS를 사용하여 구축.

HSTS 예압 목록

HSTS 해결할 수 있지만 HTTPS는 공격을 다운 그레이드하지만, 효과에 HTTP 요청 HSTS 전에 처음으로, 여전히 납치 피할 수 없다. 브라우저는이 문제 제안 해결하기 위해 공급 업체 HSTS Preload List사용자가 HTTPS 프로토콜을 사용하는 것, 이전에 방문하지 않은 경우에도, 도메인 이름의 목록을 위해, 내장 된 목록을 정기적으로 업데이트 할 수 있습니다 솔루션을.

현재 구글 크롬, 크롬, 파이어 폭스, 사파리, IE 11 및 Microsoft 에지에 의해 유지되는 사전로드 목록이 사용됩니다. 이 목록에 추가 자신의 도메인 이름을 넣어하려면 먼저 다음과 같은 기준을 충족해야합니다 :

  • (SHA-1 인증서를 사용하는 경우, 유효 기간 2016 년 이전이어야합니다) 유효한 인증서를 가지고;

  • 모든 HTTP 트래픽은 HTTPS로 리디렉션됩니다;

  • 모든 하위 도메인이 HTTPS 활성화되어 있는지 확인하십시오;

  • HSTS 출력 응답 헤더 :

  • 최대 사용 기간 이상이어야 18주 (10,886,400초);

  • 당신은 includeSubdomains 매개 변수를 지정해야합니다;

  • 당신은 프리로드 매개 변수를 지정해야합니다;

위의 모든 조건을 만족하더라도, 당신은 입력 할 수 없습니다 HSTS Preload List당신이 더 많은 정보를 볼 수 있습니다 : https://hstspreload.org/.

크롬으로 chrome://net-internals/#hsts도구, 당신은 사전로드 목록에서 특정 사이트가 도메인 이름을 수동으로 기본 사전로드 목록에 추가 할 수 있는지 여부를 확인할 수 있습니다.

HSTS 단점

HSTS는 HTTP 세션 하이재킹을위한 완벽한 솔루션이 아닙니다. 사용자는 먼저 사이트 보호를 HSTS되지 방문. 이 첫 번째 방문, 브라우저가 아직 HSTS을받지 않았기 때문에, 일반 텍스트 HTTP를 통해 액세스하는 것은 여전히 ​​가능하다.

만약 몇 가지 가능한 다운 그레이드 납치가 웹 사이트 HTTP 액세스 HSTS 보호를 통해 사용자 :

  • 내가 사이트를 방문한 적이

  • 최근에 운영체제를 다시 설치

  • 최근 다시 설치의 브라우저를

  • 새 브라우저로 전환

  • 같은 새로운 기기로 전환 : 휴대 전화

  • 브라우저의 캐시를 삭제

  • 나는하지 최근에 사이트를 방문하고 최대 사용 기간 만료

두 가지 해결책이 있습니다이 문제를 해결하려면

옵션 하나 : 브라우저 사전 설정 목록에서 HSTS 도메인 이름은, 상기 인 HSTS Preload List프로그램. 도메인 이름의 목록은 분산 및 주류 웹 브라우저에 하드 코딩되어있다. 클라이언트 액세스는이 목록의 도메인은 HTTPS를 사용하여 활성화하고, 사이트에 액세스하는 HTTP를 사용하는 것을 거부합니다.

옵션 2 : HSTS 정보는 도메인 이름 시스템 기록에 추가됩니다. 하지만 필요가 도메인 이름 시스템 보안 확장을 배포 할 필요가있는 DNS의 보안을 보장합니다.

다른 가능한 문제

HSTS 일정 시간 후 (최대 연령에 의해 지정된 기간) 실패, 그래서 때문에 HSTS 전략을 강제 할 것인지 브라우저는 현재 시스템 시간에 따라 달라집니다. 네트워크 시간 프로토콜을 통해 운영 체제가 시스템 시간을 업데이트 할 때 대부분의 경우, 각각 우분투, OS X 라이온 연결 시간 서버마다 자동으로 구분와 같은 네트워크에 연결되어 있습니다. 공격자는, NTP 정보를 위조 HSTS를 우회하는 잘못된 시간을 설정할 수 있습니다.

이 솔루션은 NTP 인증 정보, 또는 NTP가 크게 증가하거나 시간이 감소하지 않도록 설정합니다. 예를 들어 : 윈도우 8은 7 일마다 시간을 업데이트하고, 각 NTP 시간 설정이 필요하고 현재 시간은 15 시간을 초과 할 수 없습니다.

브라우저 지원 HSTS

현재 주요 브라우저는 이미 HSTS를 지원 자세한 내용은 다음 목록을 참조하십시오. :

  • 구글 크롬 4 위

  • 파이어 폭스 4 이상

  • 오페라 12 이상

  • Safari 从 OS X Mavericks 기

  • Internet Explorer 및 위

 

HSTS (HTTP 엄격한 전송 보안) 브라우저에서 http를 https로 리디렉션하는 것입니다. 사용자가 브라우저에 URL을 입력 할 때 HTTPS를 추가하지 않습니다 HSTS를 사용하지 않는 경우 HTTPS 사이트에 대한, 일반적으로 서비스 종료에 http를 https로 리디렉션 때문에, 브라우저는 기본 HTTP 액세스를 사용합니다. HSTS 경우 리디렉션의 서비스 측면을 줄일 수 있습니다.

응답 헤더 플러스에 - 우리가 HTTPS를 배포 할 때 HSTS의 유용성을 발견 한 후, 즉시 사용, 사용하기 간단  된 Max : 엄격한 전송 보안 연령 = 31,536,000.

HTTPS 스타 벅스 WiFi를 통해 사이트에 액세스 할 때 나중에 우리는 문제를 발견했다. 당신이 당신의 브라우저에 URL을 입력 한 후, 스타 벅스 와이파이 로그인 페이지에 액세스하고 로그인을 완료 표시, 단지 HTTP 사이트를 방문에 대한 액세스를 허용하지 않는, 어떤 스타 벅스 와이파이 로그인 페이지가 나타납니다,하지만 브라우저는 안전하지 않은 연결이라고 생각 우리 HTTPS 사이트.

우리의 사이트가 HSTS를 활성화으로이 뒤에 그 이유는 간단하다, 브라우저가 HTTPS 모드 요청에 기본값으로, 스타 벅스 WiFi를 와이파이 로그인 페이지로 돌아가려면 HTTP 방식에 요청을 차단, 브라우저는 이것 좀받지 않습니다 안전은 즉시 연결을 중지합니다. 당신이 HSTS는, 서버를 재 활성화하지 않는 경우이 문제가 없습니다.

만큼 무선 랜이 문제가됩니다 확인하는 HTTP 기반, 그래서 HTTPS를 배포 할 때하는 것이 활성화되어 HSTS는이 요소를 고려해야합니다. 이전에 HSTS를 사용하도록 설정 한 경우, 이제 직접 엄격한 전송 보안 응답 헤더를 제거 할 수 있지만, 변경해야합니다, 취소 할  된 Max : 엄격한 전송 보안 나이 = 0, 그렇지 않으면이 만료되기 전에 브라우저 전에 HSTS를 사용 나는 HSTS를 사용하고있다.

 

HSTS 배포

HSTS 방법 서버가 열려 : 응답 헤더 HTTPS를 통해 클라이언트 요청이 하이퍼 텍스트 전송 프로토콜 서버 반환에 포함 된 경우 Strict-Transport-Security필드. HSTS 필드는 때 암호화되지 않은 전송 잘못 설정되어 있습니다.

가장 적합한 배포 솔루션은 예를 들어, 사용자에게 가장 가까운 위치에 배치되어 그렇지 않으면 당신은 웹 서버 HSTS 층을 구성해야합니다, 프런트 엔드를 가지고와 백 엔드 웹 서버, 전면 HSTS 기관의 구성이 최고입니다 프록시 아키텍처를 역. 웹 서버는 명시 적으로 응답 헤더의 메커니즘을 증가시켜, HSTS를 지원하지 않는 경우. 다른 모든 실패하면 응용 프로그램 계층에서 HSTS을 증가시킬 수 있습니다.

HSTS는 해당 헤더에 다음 정보를 추가, 비교적 간단 수 있습니다 :

Strict-Transport-Security: max-age=63072000; includeSubdomains;preload;

Strict-Transport-Security헤더 필드의 이름입니다 max-ageHSTS가 클라이언트에 적용 대신. includeSubdomains표현은 모든 하위 도메인에 유효합니다. 도메인 이름의 브라우저에 내장 된 목록을 사용하여 미리로드.

HSTS 정책에만 응답 HTTPS에서 설정할 수 있습니다, 사이트가 기본 443 포트를 사용해야합니다, 당신은 도메인 이름을 사용해야합니다, IP 수 없습니다. 그것은 일반 텍스트가 응답 HSTS 중간 공격을 머리 수 있도록 제공되면, HTTPS에 HTTP 리디렉션 할 필요가 있습니다, 주사 부위는 DoS 공격을 수행 할 일반적인 정보를 HSTS를 통해.

HSTS는 아파치 활성화

$ vim /etc/apache2/sites-available/hi-linux.conf

# 开启HSTS需要启用headers模块
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so

<VirtualHost *:80>
  ServerName www.hi-linux.com
  ServerAlias hi-linux.com
...
 #将所有访问者重定向到HTTPS,解决HSTS首次访问问题。  RedirectPermanent / https://www.hi-linux.com/ </VirtualHost> <VirtualHost 0.0.0.0:443> ... # 启用HTTP严格传输安全  Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" ... </VirtualHost>

다시 시작 아파치 서비스

$ service apche2 restart

HSTS는 Nginx의 활성화

$ vim /etc/nginx/conf.d/hi-linux.conf

server {
   listen 443 ssl;
   server_name www.hi-linux.com;
   add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
...
}

server {
   listen 80;   server_name www.hi-linux.com;   return 301 https://www.hi-linux.com$request_uri; ... }

다시 시작 Nginx의 서비스

$ service nginx restart

IIS는 HSTS를 사용할 수 있습니다

다음 IIS HSTS 특별히 참조, 타사 모듈을 사용할 필요가 활성화하려면 https://hstsiis.codeplex.com/

테스트가 성공적으로 설정 여부

설치가 완료되면, 당신이 사용할 수있는 curl다음 세트의 성공 여부를 확인하는 명령을. 나오는 결과가 포함되어있는 경우 Strict-Transport-Security필드를, 다음의 지침은 성공을 설정합니다.

$ curl -I https://www.hi-linux.com
HTTP/1.1 200 OK
Server: nginx Date: Sat, 27 May 2017 03:52:19 GMT Content-Type: text/html; charset=utf-8 ... Strict-Transport-Security: max-age=63072000; includeSubDomains; preload X-Frame-Options: deny X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff ...

를 들어 HSTSHSTS Preload List가, HTTPS 서비스를 제공하지 않습니다 권장 사항을 사용하지 않는 것이 바로이 아니다. 일단 기존의 사용자 전에 적용 HSTS 때문에 max-age제대로 액세스 할 수없는 사이트의 원인은 HTTPS로 리디렉션됩니다 만료되기 전에. 유일한 방법은 새 도메인 이름을 얻는 것입니다.

참조 문서

http://www.google.com에
http://t.cn/RSzfyBb
https://yuan.ga/hsts-strict-https-enabled-site/
https://imququ.com/post/sth-about- 스위치 - 투 - https.html
http://www.ttlsa.com/web/hsts-for-nginx-apache-lighttpd/
http://www.jianshu.com/p/66ddc3124006

 

HSTS의 브라우저 기능을 종료하는 방법

소스 http://www.tuicool.com/articles/QbYBne

구성 중에 SSL 인증서, 웹 보안 프로토콜, 즉, 데이터 전송이보다 안전하게 서버 측에서 설정하는 데 사용될 수있다  HSTS (HTTP 엄격한 전송 보안). 이 브라우저는 HTTPS를 통해 액세스 및 HTTP의 절대 금지 할 수 있습니다 알려줍니다. 

HTTP 엄격한 전송 보안 (HSTS)는 선택 하에서 보안 강화 특별 응답 헤더를 사용하여 웹 응용 프로그램에 의해 지정된다. 지원되는 브라우저되면 브라우저가 지정된 도메인에 HTTP를 통해 전송되는 모든 통신을 방지하고 대신 HTTPS를 통해 모든 통신을 보내드립니다이 헤더를 수신합니다. 또한 HTTPS는 브라우저에서 메시지를 클릭 방지 할 수 있습니다.

그러나, 매일의 개발 기간 동안, 때로는 우리가 HTTP 연결의 경우를 테스트 페이지를 표시하려면, 다음 HSTS 존재는 계속 디버깅 쉽지 않을 것입니다. HSTS가 브라우저 캐시, 간단한 조작에 저장된 쿠키와 동일하지 않고 브라우저 캐시는 거의 영향을 미치지 삭제하기 때문에, 방법 페이지가 여전히 HTTPS를 통해 전송된다.  그렇다면, 브라우저를 HSTS 구글의 모든 종류를 닫습니다 않는다

어머니의

그런 다음 몇 가지 일반적인 브라우저에 대한 여기에 요약에 가까운 방법을 HSTS.

사파리 브라우저

  1. 완전히 사파리 종료
  2. 삭제  ~/Library/Cookies/HSTS.plist 이 파일을
  3. Safari는 다시 열 수 있습니다
  4. 드문 경우에, 당신은 시스템을 다시 부팅해야

크롬 브라우저

  1. 주소 표시 줄 chrome://net-internals/#hsts
  2. 에서  Delete domain 도메인 이름이 프로젝트에 입력 및  Delete 삭제
  3. 수  Query domain 성공적으로 테스트를 삭제할지 여부를

오페라 브라우저

크롬 등과 같은 방식으로

파이어 폭스 브라우저

  1. 열려있는 모든 페이지를 닫습니다
  2. 기록 지우기 및 캐시
  3. 주소 표시 줄 about:permissions
  4. 도메인 이름 검색 항목을 클릭 Forget About This Site

 

 

============================= 종료

 

추천

출처www.cnblogs.com/lsgxeva/p/11275465.html