HTTP严格传输安全(HSTS),Azure和HTTP严格传输安全IIS模块

问题: 如何在Azure网站中正确安装和configurationHTTP Strict Transport Security(HSTS)?

显然,IIS的使用方法是安装这个模块: http : //hstsiis.codeplex.com/

问题是,根据文档,您需要在不同的地方安装几个.dll(HSTS-IIS-Module-2.0.0.msi)。 不幸的是,在Azure网站环境中似乎不可能(如何在Azure网站中安装IIS模块?)? 使用虚拟机可能会工作,但我的问题针对一个常规的Azure网站/ Web应用程序(ASP.NET MVC 5应用程序)。

更新:

如果您正在运行ASP.NET,则需要安装NWebsec 。 它将允许您configurationHSTS,但也可以configuration与OWASP Secure Headers Project相关的Content-Security-Policy和其他头文件。


Scott Hanselman在他的博客中解释了这个解决scheme(来源于答案底部)。

基本上,HSTS只是一个HTTP头。 但是你只想在HTTPS中发送它。 然后这将locking您的网站在HTTPS指定的max-age

以下是应用程序的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> 

资源