经常遇到这样一个需求,IIS网站绑定了SSL证书后,需要使用https方式访问。但是很多客户习惯性的只会输入域名。这个时候就会遇到2个问题:
1、http站点关闭的情况下,用户的浏览器显示无法访问
2、http可以访问的话,用户直接访问了http站点。而现在主流的chrome浏览器直接提示为网站高危。
为了解决这个问题,找了些资料,发现用IIS的URL重新功能是最好的。当用户直接域名访问站点时,直接自动跳转到https://xxx.xxx.xxx
具体实现方式如下:
1、windows2008R2开始IIS就不自带此功能了,需要去微软站点下载此功能扩展程序。
rewrite_amd64_en-US.msi
下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=47337
windows 2008 r2版本
2、安装后,在IIS管理中,找到对应站点,在右侧功能配置栏中找到“URL Rewrite”配置项
3、新增规则,主要配置信息为
RequestURL选择“Matchs the Pattern”,pattern填入“(.*)”
action type选择redirect方式,RedirectURL填入“https://{HTTP_HOST}/{R:1}”
其他的配置点看下图
补充,另外最直接的方法就是安装好URL rewrite后,在站点的web.config中加入如下代码。同时也让IIS启用HTTP严格传输安全性(HSTS)
<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>