在 IIS 6.0 中优雅地实施 SSL

在 IIS 6.0 中优雅地实施 SSL

我有一个在 IIS 下运行的网站,该网站已应用 SSL 证书。我们希望强制网站使用 HTTPS,只需选中“需要安全通道”框即可轻松完成,但这会立即破坏人们通过 HTTP 进行连接的能力(按照设计)。

我想要做的是找到一种方法,当人们输入错误的内容(或从旧书签连接)时,自动将他们从 HTTP 重定向到 HTTPS。

有没有办法做到这一点而不在 IIS 中创建第二个网站?

答案1

如果您需要在服务器级别执行此操作,那么您将必须创建另一个站点并将其转发到 https 站点。

如果你可以编辑代码,你可以不是在服务器级别强制执行 ssl,相反,您可以在您的网站中通过检测 url 是否以 http: 开头并使用 https: 重定向到相同的 url 来执行此操作。

答案2

我发布于堆栈溢出

如果使用“需要安全通道”设置配置了服务器/站点/vdir,则服务器的响应将是“403.4 禁止:需要 SSL 才能查看此资源。”错误或“403.5 禁止:需要 SSL 128 才能查看此资源。”。

您实际上可以自定义 403.4 或 403.5 错误以重定向回 HTTPS。使用以下命令在站点下创建 VDIR:无需 SSL**这个很重要) - 我使用“CustomError”。在此目录中创建一个名为 403_4_Error.asp 的 ASP 文件,其中包含以下内容:

<%@ LANGUAGE="VBScript" %> 
<%
if Request.ServerVariables("HTTPS") <> "on" then
    sServer = Request.ServerVariables("SERVER_NAME")
    sScript = Request.ServerVariables("SCRIPT_NAME")
    sQuery  = Request.ServerVariables("QUERY_STRING")
    Response.Write("https://" & sServer & sScript & "?" & sQuery)
end if
%>

编辑服务器/站点/vdir 的 403.4/403.5 自定义错误属性,并将 MessageType 设置为 URL,将 URL 设置为“/CustomError/403_4_Error.asp”。

请注意,使用了 ASP,您可以轻松使用 ASP.net 或任何其他脚本语言。

答案3

我们最终在应用程序代码中完成了这项工作;我们的页面基类会尽早检查它是否在 HTTP 中,并根据需要重定向到 HTTPS。这实际上取决于您对应用程序代码的信任程度 :)

相关内容