如何在ASP.Net Core中强制执行SSL

安全套接字层(简称SSL)是一种标准的安全协议,用于加密Web服务器和Web浏览器之间的通信。 SSL很重要! 没有它,服务器和客户端之间交换的信息将以纯文本格式发送,因此任何能够捕获数据的黑客都可以读取。

SSL确保服务器和客户端之间发送的信息始终被加密。 即使捕获了您的敏感数据(用户名,密码,信用卡详细信息等),对于缺少在通信会话期间由服务器和客户端共享的SSL证书和加密密钥的任何人,仍将不可读。

[ 小心! 每个开发人员都应避免的8个职业陷阱 要成为一名真正的软件开发人员,必须阅读7本书 即使是经验丰富的开发人员,也会犯15个菜鸟错误 | 通过InfoWorld的App Dev Report新闻通讯了解编程方面的热门话题。 ]

在本文中,我们将研究如何在ASP.Net Core中使用SSL。 我们将使用一个新的中间件组件UseHttpsRedirection将所有HTTP请求重定向到HTTPS。 我们还将利用HSTS(HTTP严格传输安全性)(一项可选的安全性增强功能)来进一步增强Web连接的安全性。 ASP.Net Core 2.1中引入了对新中间件和HSTS增强的支持,以强制客户端在连接中使用HTTPS。

创建一个ASP.Net Core Web API项目

首先,让我们创建一个ASP.NET Core项目并安装必要的软件包。 如果您的系统已启动并运行Visual Studio 2017,请按照下面概述的步骤创建一个ASP.Net Core Web API项目。

  1. 启动Visual Studio 2017 IDE。
  2. 单击文件>新建>项目。
  3. 从显示的模板列表中选择“ ASP.Net Core Web应用程序(.Net Core)”。
  4. 指定项目的名称。
  5. 单击确定保存项目。
  6. 在“新的.Net Core Web应用程序…”窗口中选择“ API”。
  7. 从窗口顶部的下拉列表中选择版本ASP.Net Core 2.1或更高版本。
  8. 取消选中“启用Docker支持”,然后选择“不进行身份验证”,因为在这里我们将不会使用这两个选项。
  9. 确保选中“配置HTTPS”框。
  10. 单击确定。

这将在启用了SSL的Visual Studio中创建一个新的ASP.Net Core应用程序。 新的默认模板将在Startup.cs文件中添加必要的中间件组件,如下面的代码片段所示。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        // Write your own custom code to configure the middleware
    }
    else
    {
        app.UseHsts();
    }
    app.UseHttpsRedirection();
}

这是生成的默认Configure方法的修改版本。 下面的代码片段说明了如何使用UseDeveloperExceptionPage方法从管道捕获异常,然后相应地生成HTML错误响应。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseMvc();
        }

在生产环境中运行应用程序时,您将需要配置中间件以将所有HTTP请求重定向到HTTPS。 下一节演示如何自定义AddHttpsRedirection中间件以实现此目的。

将HTTP请求重定向到ASP.Net Core中的HTTPS

打开Startup.cs文件,并在ConfigureServices方法中添加以下代码。 注意如何使用AddHttpsRedirection方法配置中间件选项。 此处的HTTPS端口已设置为5001。 默认值为443。

    services.AddHttpsRedirection(options =>
    {
        options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
        options.HttpsPort = 5001;
    });

在ASP.Net Core中使用HSTS可增强安全性

HTTP严格传输安全性是一种可选的安全性机制,并且具有HTTP / 2功能。 HSTS是使用特殊的响应标头指定的,可用于保护网站免受中间人攻击。 HSTS确保Web浏览器为特定的主机标头和特定的持续时间缓存证书。

但是,由于HSTS由客户端强制执行,因此存在某些限制。 客户端应支持HSTS,并且您至少需要一个成功的HTTPS请求,这是建立HSTS策略所必需的。 以下代码段说明了如何在ConfigureServices方法中配置HSTS。

    services.AddHsts(options =>
    {
        options.Preload = false;
        options.IncludeSubDomains = false;
        options.MaxAge = TimeSpan.FromDays(30);
    });

在运行项目时,系统将提示您信任IIS Express(如果正在使用IIS Express)生成的自签名证书。 如果单击“是”,将提示您安装证书。 再次单击“是”以安装证书。 就是这样! 在Web浏览器中运行该应用程序时,您将在URL上看到HTTPS。 对于生产,您应该从信誉良好的证书颁发机构购买有效的可信证书,然后从Windows证书存储区进行安装。

HTTPS不仅可以加密服务器和客户端之间的通信,还可以防止其他人修改内容。 HSTS是一种Web安全策略机制,用于确保Web浏览器仅通过安全的HTTPS连接而不是通过不安全的HTTPS连接与Web服务器交互。 我将在此处的后续文章中进一步讨论ASP.Net Core安全性。

From: https://www.infoworld.com/article/3309256/how-to-enforce-ssl-in-aspnet-core.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值