2017-10-30 21 views
1

私のアプリケーションにHSTSを実装したいと思います。AWS Elastic Load BalancerでHTTP Strict Transport Security(HSTS)を実装する方法は?

SSLを終了し、アプリケーションにリバースプロキシとして使用されるApacheサーバであるトラフィックを転送するELBがあります。

私は、HSTSを実装するために、私の要求にStrict-Transport-Securityというヘッダを追加する必要があることを知っています。

残念ながら、Apacheサーバ上に実装することはできません.HTTP仮想ホストに追加する必要があり、ApacheにはHTTP仮想ホストが設定されているだけなので、SSLはELBで終了するためです。

つまり、ELBは要求を転送する際に、Strict-Transport-Securityヘッダーを要求に追加する必要があります。

どうすればよいですか?私のために何らかのセキュリティポリシーを追加することはできますか?

答えて

2

私はAWSサポートに尋ねました。答えは現時点ではELBがクライアントからのリクエストにHSTSヘッダーを追加できないということでした。そこで、私はApacheサーバーを使って回避策を見つけることにしました。

HSTS RFC状態

アンHSTSホストは非セキュアトランスポートを介して搬送HTTP応答のSTSヘッダフィールドを含んではならないこと:ここで私が見つけたソリューションです。私は、やった

のApacheでHTTP => HTTPSのリダイレクトAfterヘッダを設定することでした。このリダイレクトにはフラグ[L]が付いているため、301リダイレクトにはヘッダーは含まれませんが、https要求はすべて行われます。私のApacheの設定は、次のようになります。あなたは、Apache 2.4+で作業している場合は

<VirtualHost *:80> 
... 
    #http=>https 
    RewriteCond %{HTTP:X-Forwarded-Proto} =http 
    RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] 

    #hsts 
    Header set Strict-Transport-Security "max-age=31536000" 
0

Maybe? - これまでと同じシナリオを解決しましたか?

+0

この記事をありがとう。その上には、「HTTP Strict Transport Security(HSTS)と並行して、これはあなたのELBのための非常に固い設定です」。だから、私はHSTSを実装していないと思うが、SSLv2とSSLv3を無効にする。 – Pedreiro

0

、あなたがexpressionsとディレクティブ<If><ElseIf>、および<Else>に精通しているかもしれません。

私は開発環境、ステージング環境、本番環境の間で複雑な設定をしていますので、[L]フラグにRewriteRuleというフラグを付けるだけでは、私のためにそれをカットすることはできません。それは私の環境ではうまく機能し、私はそれがRFCを満たすため、より信頼性があることを感じて

<IfModule mod_headers.c> 
    <If "%{REQUEST_SCHEME} == 'https' || %{HTTP:X-Forwarded-Proto} == 'https'"> 
     Header set Strict-Transport-Security "max-age=31536000" 
    </If> 
</IfModule> 

これは私が私のの.htaccessに配置された後の溶液に私をもたらしました。

あなたがインスタンスに直接当たらない場合は"%{REQUEST_SCHEME} == 'https'部分を削除することができますが、これは開発環境のデバッグプロセスの一部です。

HSTS RFCの実際の仕様について正しい方向に私を指し示すために、Pedreiroに多くの感謝をします。

関連する問題