过去三四年来,我一直在 Win2003 服务器上托管一个域名,但现在我需要让该域名只能通过 HTTPS 访问。
我已经正确安装了证书,并且它运行良好(服务器托管多个域,但这个域托管在不同的公共 IP 地址上),但我正在努力让 IIS 将所有访问http://www.example.com到https://www.example.com。
我在 IIS 中找到了“需要安全通道”选项,但选中该选项会导致任何未键入该https://
部分的人看到错误消息(如下)。将用户重定向到 HTTPS 站点的最佳方法是什么(无需用户担心)?
必须通过安全通道查看该页面您尝试访问的页面受安全套接字层 (SSL) 保护。
请尝试以下操作:
在您尝试访问的地址开头输入 https://,然后按 ENTER。
HTTP 错误 403.4 - 禁止访问:需要 SSL 才能查看此资源。
答案1
启用 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.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 服务器似乎是不必要的,甚至可能带来安全风险。