【问题标题】:How to use HTTPS in an ASP.Net Application如何在 ASP.Net 应用程序中使用 HTTPS
【发布时间】:2010-10-07 02:04:01
【问题描述】:

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

如何做到这一点?

【问题讨论】:

    标签: asp.net https


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      你没有说你使用的是什么版本的 IIS,而是here are some detailed instructions for IIS 6

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

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

      您可以通过 IIS 启用 SSL,并且仅对 login.aspx 页面需要它,其余页面不需要。

      【讨论】:

        【解决方案3】:

        在您设置/安装 SSL 后,您希望在登录页面上执行某种重定向到 https://。那么无论用户在验证后被发送到什么页面,它都可以是 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”,您将避免在测试环境中出现错误(除非您的测试服务器有另一个名称而不是检查:“mytestservername”)。

        【讨论】:

        • 我不知道如何使用 HTTPS:// 重定向登录页面,这是我的问题。谢谢
        • 将 Guiness 代码添加到包含您的登录控件的页面。我实际上可能会将它移到 page_load 的顶部或 OnInit 中,因为这样可以节省处理其他所有内容,但这会很好地工作。
        【解决方案4】:
        1. 首先获取或创建证书

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

        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> 
          

        希望这会有所帮助!

        【讨论】:

        【解决方案5】:

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

        我建议使用http://nuget.org/packages/SecurePages/ 它使您能够保护特定页面或使用正则表达式来定义匹配项。它还将强制所有不匹配正则表达式或直接指定的页面返回 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);
        

        【讨论】:

        • 感谢您发布您的答案!请务必仔细阅读FAQ on Self-Promotion。另请注意,每次链接到自己的网站/产品时,都要求发布免责声明。
        猜你喜欢
        • 2013-10-27
        • 2016-06-14
        • 1970-01-01
        • 1970-01-01
        • 2013-08-29
        • 2012-06-10
        • 2011-05-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多