2014-06-10 2 views
54

웹 응용 프로그램을 다른 수의 호스트에서 실행합니다. 각 가상 호스트의 Apache 구성을 변경하지 않으려면 각 저장소의 기본 설치가 몇 줄에 불과하므로 내 repo에 .htaccess 파일을 사용하여 대부분의 구성을 추가합니다. 또한 새 버전을 배포 할 때 구성을 변경할 수도 있습니다. 현재 .htaccess (un)는 헤더를 설정하고 일부는 마법을 다시 작성하고 UA의 캐싱을 제어합니다.HTTPS에서만 .htaccess에서 HSTS 헤더를 설정하는 방법

.htaccess를 사용하여 응용 프로그램에서 HSTS를 활성화하려고합니다.

Header always set Strict-Transport-Security "max-age=31536000" 

그러나 스펙은 분명히 상태 : : 그냥 헤더를 설정하는 것은 간단합니다. "HSTS 호스트는 비보안 전송을 통해 전달 된 HTTP 응답의 STS 헤더 필드를 포함해서는 안된다." 따라서 HTTP 연결을 통해 보낼 때 헤더를 보내지 않습니다. http://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14을 참조하십시오.

환경 변수를 사용하여 헤더를 설정하려고했지만 거기에 붙어 있습니다. 어떻게 할 수 있는지 아는 사람?

+0

스택 오버플로는 프로그래밍 및 개발 관련 질문 용 사이트입니다. 이 질문은 프로그래밍이나 개발이 아니기 때문에 주제와는 거리가 먼 것처럼 보입니다. 도움말 센터에서 [여기에서 내가 질문 할 수있는 항목은 무엇입니까?] (http://stackoverflow.com/help/on-topic)를 참조하십시오. 아마도 [Super User] (http://superuser.com/) 나 [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/)가 더 나은 곳이 될 것입니다. 또한 [Dev Ops에 대한 질문은 어디에 게시합니까?] (http://meta.stackexchange.com/q/134306) – jww

+3

@jww .htaccess 파일은 내 웹 응용 프로그램 저장소의 일부이며 개발자가 원하는 정보를 얻을 수 있도록 유지 관리됩니다. 응용 프로그램의 동작 (예 : 캐싱, URL 재 작성 및 올바른 헤더 설정). 이 질문은 SO에서 거의 20K 번 보입니다. ([apache], [.htaccess] 및 [mod-headers] 태그도 있습니다.) 그래서 나는 그것이 주제에서 벗어난 것 같지 않습니다. – nielsr

+1

* ".htaccess 파일은 내 웹 응용 프로그램 저장소의 일부이며 개발자가 관리합니다."* - 스택 오버플로에 포함 할 기준도 아닙니다. 좋은 냄새 테스트는 코드를 보여줄 수 있습니까? 이 경우 대답은 '아니오'입니다. 시험 후, 그냥 아파치 설정 질문. * "질문은 거의 20K 번 보입니다 ..."- Stack Overflow는 투기장입니다. 주제를 벗어난 질문을 여기에서 묻고 검색 엔진에서 색인을 생성합니다.현상의 다른 예는 [SSH를 통한 파일 전송] (http://stackoverflow.com/q/343711)입니다. 개발자는 때때로 SSH를 사용합니다. – jww

답변

80

쉽게 사용할 수있는 HTTPS 환경 변수가 있습니다. 같은 질문을 가진 사람들을 위해 :

Header set Strict-Transport-Security "max-age=31536000" env=HTTPS 
+4

이 작품을 확인할 수 있습니다 – Gaia

+2

이 설정은 어떤 파일로 만들어 졌습니까? –

+7

@ ted.strauss 그것은'.htaccess' 파일에 있습니다. – zen

10

nielsr의 대답을 구축하기 위해, 나는 크롬 브라우저에 도메인을 하드 코딩합니다 https://hstspreload.org의 안전한 배포 권장 사항을 충족하기 위해 htaccess로에서 다음을 사용했다. 이렇게하면 하위 도메인에서 HSTS가 적용되며 사전로드 목록에 포함하면 쉽게 취소 할 수 없으므로 rtfm을 참조하십시오. httpd.conf를 들어

<IfModule mod_headers.c> 
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS 
</IfModule> 
+3

전체 도메인에서 HTTPS 만 사용하려는 경우 조금 더 안전합니다. 그렇지 않다면 엄청나게 위험합니다. 따라서 그것에 대해 경고하지 않고 무책임하게 제안하십시오. 웹 서버가 최상위 도메인 (example.com)의 요청에이 머리글로 응답한다고 가정 해 봅니다. 그러면 https가 아닌 http 만 사용하여 다른 웹 서버에서 제공하는 다른 하위 도메인 (예 : intranet.example.com) , 작동 안 할 것이다. 프리로드 태그를 포함 시키면 사전로드 목록에 제출되어 웹 브라우저에 하드 코드 된 다음 되돌릴 수 없게됩니다. –

+1

공정한 의견, 답변이 업데이트되었습니다. – LJT

+1

"preload"인수를 추가하기 전에 작은 글씨를 읽으십시오. – Dimitris

1

(당신이 편집 할 수있는 경우) 당신은

<VirtualHost 65.81.122.43:443> 
    Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains;" 
</VirtualHost> 

주를 사용할 수 있습니다 경우에만 HTTPS 가상 호스트에 설정해야합니다 및 HTTP 가상 호스트에있을 수 없습니다.

언제해야하며 .htaccess 파일을 사용해야합니까?

.htaccess 파일을 허용하면 Apache가 서버에 액세스 할 때마다이를 찾습니다. 상위 디렉토리도 검색되기 때문에 약간의 시간이 소요되어 서버의 성능에 영향을 줄 수 있습니다. Source

+0

아파치는 항상 .htaccess 파일을 찾는다. 따라서 .htaccess 검색을 비활성화하지 않으면 Apache가 파일을 확인하기 때문에 성능이 향상되지 않습니다. –