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

Posted

技术标签:

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

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

如何做到这一点?

【问题讨论】:

【参考方案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】:

    首先获取或创建证书

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

    将secureWebPages标签添加到web.config

    <configuration>
        ...
        <secureWebPages enabled="true">
            ...
        </secureWebPages>
        ...
        <system.web>
            ...
        </system.web>
    </configuration>
    

    添加用于 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> 
    

希望这会有所帮助!

【讨论】:

SecureWebPageModule 项目已更名为“SecuritySwitch”,可以在http://code.google.com/p/securityswitch/找到【参考方案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。另请注意,每次链接到自己的网站/产品时,都要求发布免责声明。

以上是关于如何在 ASP.Net 应用程序中使用 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2017 Web Proj ASP.NET Core 2.0 中禁用 Https

如何在 ASP.NET Core 中测试 https 重定向?

如何在宝塔面板启用 ASP.NET CORE 网站并自动申请 HTTPS 证书

如何在 ASP.NET MVC3 中通过 HTTPS 提供静态文件(在 ~/Content 中)

如何使用自托管 ASP.NET Core 2 应用程序 (httpsys) 进行 HTTPS (SSL)

使用命令行如何在 ASP.NET 中首先从 DB 搭建脚手架 - 而不是 ASP.NET Core MVC?