如何强制/重定向 HTTP 到 HTTPS

如何强制/重定向 HTTP 到 HTTPS

过去三四年来,我一直在 Win2003 服务器上托管一个域名,但现在我需要让该域名只能通过 HTTPS 访问。

我已经正确安装了证书,并且它运行良好(服务器托管多个域,但这个域托管在不同的公共 IP 地址上),但我正在努力让 IIS 将所有访问http://www.example.comhttps://www.example.com

我在 IIS 中找到了“需要安全通道”选项,但选中该选项会导致任何未键入该https://部分的人看到错误消息(如下)。将用户重定向到 HTTPS 站点的最佳方法是什么(无需用户担心)?

必须通过安全通道查看该页面您尝试访问的页面受安全套接字层 (SSL) 保护。

请尝试以下操作:

在您尝试访问的地址开头输入 https://,然后按 ENTER。

HTTP 错误 403.4 - 禁止访问:需要 SSL 才能查看此资源。

答案1

使用 IIS 将 HTTP 重定向到 HTTPS

启用 SSL 后,每当您尝试通过 http 访问页面时,服务器都会生成 403.4 错误。现在 IIS 已配置为每次发生此错误时运行您的 sslredirect.asp 页面。错误页面将包含一个查询字符串,其中包含错误编号和导致错误的页面,即“403;http://www.whatever.com“。我们的 ASP 文件使用一个简单的脚本来修剪开头部分 (430;http),添加必要的“https”,然后重定向到用户使用 SSL 请求的任何页面。瞧!

答案2

最干净的方法是安装 mod rewrite isapi 过滤器。并将所有 http 调用重定向到 https(或者如果您愿意,仅将特定文件夹/页面的调用重定向到 https)。

http://www.isapirewrite.com/

这里有一篇文章解释了如何做到这一点并提到了其他一些建议。 http://www.iis-aid.com/articles/how_to_guides/three_methods_redirect_http_https

答案3

查看 Microsoft 知识库文章如何将 Outlook Web Access 客户端的 HTTP 连接重定向到 HTTPS,以及如何重定向默认网站以指向 Exchange 虚拟目录

正确配置它有几个步骤;代码是:

<%

If Request.ServerVariables("HTTPS")  = "off" Then
Response.Redirect "https://" & Request.ServerVariables("HTTP_HOST") & "/Exchange"
End If 

%> 

答案4

让您的发布防火墙执行重定向。让呼叫到达它不处理的实际 Web 服务器似乎是不必要的,甚至可能带来安全风险。

相关内容