A) 您能否在服务器端仅针对每个 Web 应用程序强制执行 SSL 连接(通过选择“需要安全通道”选项),或者您是否也可以针对每个虚拟目录或什至仅针对每个网页强制执行 SSL 连接?
B) 强制 SSL 连接究竟是如何工作的?如果用户指定 http 而不是 https 协议(protocol)(在请求的 URL 中),请求将自动被 IIS 拒绝?
谢谢
最佳答案
如前所述,1)SSL可以设置在服务端、端或虚拟目录。
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
%>
为 403.4/403.5 编辑服务器/站点/vdir 的自定义错误属性,并将 MessageType 设置为 URL,将 URL 设置为“/CustomError/403_4_Error.asp”。
请注意,这里使用了 ASP,您可以轻松使用 ASP.net 或任何其他脚本语言。
关于asp.net - 强制 SSL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/815566/