如何在ASP.Net应用程序中使用HTTPS

我想在我的ASP.NET Web应用程序中使用HTTPS,但仅限于Login.aspx页面。

这怎么能做到呢?

  1. 首先获取或创build一个证书

  2. http://www.codeproject.com/Articles/7206/Switching-Between-HTTP-and-HTTPS-Automatically-Ver获取SecureWebPageModule模块。; 有关设置的说明可以在文章中find。

  3. 将secureWebPages标签添加到web.config

    <configuration> ... <secureWebPages enabled="true"> ... </secureWebPages> ... <system.web> ... </system.web> </configuration> 
  4. 添加要用于https协议的文件和目录:

     <secureWebPages enabled="true"> <file path="Login.aspx" /> <file path="Admin/Calendar.aspx" ignore="True" /> <file path="Members/Users.aspx" /> <directory path="Admin" /> <directory path="Members/Secure" /> </secureWebPages> 

希望这可以帮助!

您可以发布自己的证书,也可以购买一个。 需要注意的是,根据公司情况购买一个,意味着它已经存储在大多数浏览器的证书存储区中。 你自己发布的一个不会,你的用户将不得不采取安装你的证书的额外步骤。

你不说你使用的是什么版本的IIS,但是这里有一些关于IIS 6的详细说明

你可以购买相对便宜的证书,或者你可以与大男孩(verisign)并获得一个扩展的validation证书,将您的地址栏变成IE,绿色。 这也是一个有点严格的validation过程,需要时间。

如果你知道所有的用户将会击中你的网站,那么安装你自己的网站就没有问题了。 但是,对于一个匿名用户(你不知道)的开放网站,最好购买一个已经在大多数主stream浏览器,证书商店中的网站。

您可以通过IIS启用SSL,并只需要您的login.aspx页面,而不是其余。

在获得SSL设置/安装后,您需要在login页面上进行某种redirect到https://。 然后无论用户在validation后发送到哪个页面,都可以是http://。

 Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender If Request.IsSecureConnection = False And _ Not Request.Url.Host.Contains("localhost") Then Response.Redirect(Request.Url.AbsoluteUri.Replace("http://", "https://")) End If End Sub 

这可能更容易在母版页上实现,或者只需要您需要https的所有页面。 通过检查“localhost”,你将避免在你的testing环境中得到一个错误(除非你的testing服务器有另外一个名字,比如:“mytestservername”)。

免责声明 – 我参与了这个项目的开发

我会build议使用http://nuget.org/packages/SecurePages/它使您能够保护特定页面或使用正则expression式来定义匹配。; 它也将强制所有页面不匹配正则expression式或直接指定回HTTP。

你可以通过NuGet安装它: Install-Package SecurePages

文档在这里: https : //github.com/webadvanced/Secure-Page-manager-for-asp.net#secure-pages

简单的用法:

 SecurePagesConfiguration.Urls.AddUrl("/cart"); 

要么

 SecurePagesConfiguration.Urls.AddRegex(@"(.*)account", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline); 

您可以在您的IISconfiguration中启用HTTPS,但除非获得SSL证书并将其插入IIS,否则它将不会“安全”。 确保您打开了端口443。