在 IIS 6.0 中优雅地实施 SSL

kdm*_*ray 4 iis ssl iis-6

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

我想要做的是找到一种方法,如果人们输入错误的内容(或从旧书签连接),可以自动从 HTTP -> HTTPS 重定向人们。

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

Chr*_*wis 8

我在StackOverflow上发布了这个

如果使用“需要安全通道”设置配置服务器/站点/vdir,则来自服务器的响应将是“403.4 Forbidden: SSL is required to view this resource”。错误或“403.5 Forbidden: SSL 128 is required to view this resource。”。

您实际上可以自定义 403.4 或 403.5 错误以重定向回 HTTPS。在您的站点下创建一个没有 SSL 要求的 VDIR (**这是重要的) - 我使用“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
%>
Run Code Online (Sandbox Code Playgroud)

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

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