web-dev-qa-db-ja.com

HTTP Strict Transport Security(HSTS)、AzureおよびHTTP Strict Transport Security IISモジュール

質問:Azure WebサイトにHTTPStrict Transport Security(HSTS)を適切にインストールして構成するにはどうすればよいですか?

どうやらIIS使用する方法は、このモジュールをインストールすることです: http://hstsiis.codeplex.com/

問題は、ドキュメントによると、いくつかの.dllをさまざまな場所(HSTS-IIS-Module-2.0.0.msi)にインストールする必要があることです。残念ながら、これはAzure Webサイト環境では不可能と思われます(AzureWebサイトにIISモジュールをインストールする方法は?)?仮想マシンを使用するとおそらく機能しますが、私の質問は通常のAzure Webサイト/ Webアプリを対象としています(ASP.NET MVC 5アプリケーション)。

4
PussInBoots

更新:

ASP.NETを実行している場合は、インストールする必要があります NWebsec 。これにより、HSTSだけでなく、Content-Security-Policyおよび OWASP Secure Headers Project に関連するその他のヘッダーを構成できます。


この解決策は、Scott Hanselmanのブログ(回答の下部にあるソース)で取り上げられています。

基本的に、HSTSは単なるHTTPヘッダーです。ただし、HTTPSを使用している場合にのみ送信する必要があります。これにより、指定されたmax-ageのHTTPSでサイトがロックされます。

アプリケーションのweb.configに含まれるべきものは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="HTTP to HTTPS redirect" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_Host}/{R:1}"
                        redirectType="Permanent" />
                </rule>
            </rules>
            <outboundRules>
                <rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
                    <match serverVariable="RESPONSE_Strict_Transport_Security"
                        pattern=".*" />
                    <conditions>
                        <add input="{HTTPS}" pattern="on" ignoreCase="true" />
                    </conditions>
                    <action type="Rewrite" value="max-age=31536000" />
                </rule>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

ソース

4
Maxime Rouiller