在IIS 6.0中优雅地执行SSL

我有一个网站在IIS下运行,其中应用了SSL证书。 我们希望通过检查“需要安全通道”框来轻松实现网站的HTTPS使用,但这会立即破坏人们通过HTTP连接(按devise)的能力。

我想要做的是find一种方法来自动从HTTPredirect人 – > HTTPS,如果他们input错误的东西(或从旧书签连接)。

有没有办法做到这一点,而无需在IIS中创build第二个网站?

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

如果您可以编辑代码,则无法在服务器级别实施ssl,而是可以通过检测url是否以http:开头,然后使用https:redirect到相同的url来实现。

我发布在StackOverflow上

如果使用“要求安全通道”设置来configurationserver / site / vdir,则服务器的响应将为“403.4禁止访问:需要SSL才能查看此资源”。 错误或“403.5 Forbidden:SSL 128需要查看此资源”。

您实际上可以自定义403.4或403.5错误以redirect回HTTPS。 在您的站点下创build一个无需SSL要求的VDIR( **这是重要的 ) – 我使用“CustomError”。 在这个目录下创build一个名为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 %> 

编辑403.4 / 403.5的server / site / vdir的Custom Error属性,并将MessageType设置为URL,将URL设置为“/CustomError/403_4_Error.asp”。

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

我们结束了在我们的应用程序代码中这样做; 我们的页面基类很早就检查它是否在HTTP中,并根据需要redirect到HTTPS。 这真的取决于你有多信任你的应用程序代码:)