强制SSL连接
A)你能在服务器端,强制SSL连接(通过唯一的每个Web应用程序中选择要求安全通道选项),或者你也强制执行为每个虚拟目录甚至只有每网页?
B)究竟如何执行SSL连接工作?如果用户指定http而不是https协议(在请求的URL中),请求会自动被IIS拒绝?
感谢名单
如上所述,1)SSL可以在服务器,侧面或虚拟目录中设置。 2)如果server/site/vdir使用“Require Secure Channel”设置进行配置,则服务器的响应将是“403.4 Forbidden:需要SSL才能查看此资源”。错误或“403.5 Forbidden: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,并设置消息类型到URL和URL为“/ CustomError/403_4_Error.asp”。
请注意,使用ASP时,您可以轻松使用ASP.net或任何其他脚本语言。
有可能是配置设置在IIS级别来执行这一点,但在代码中,你可以检查,像这样Request.IsSecureConnection值:
if (!Request.IsSecureConnection)
{
try
{
Response.redirect("https://....", true);
}
catch (ThreadAbortException)
{}
}
在哪里“ ....“是当前页面的网址。这种类型代码的好处在于MasterLayout.master文件的Page_Load方法。
任何想法如何在IIS级别实施SSL(每个网页)? – SourceC 2009-05-02 23:39:14
这比thanx非常有用 – SourceC 2009-05-06 19:56:22