ASP.NET Core 1.0 部署 HTTPS (.NET Core 1.0)

这两个月要做一个项目,正逢ASP.Net Core 1.0版本的正式发布。由于现代互联网的安全要求,HTTPS加密通讯已成主流,所以就有了这个方案。

本方案启发于一个旧版的解决方案:

ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)

http://www.cnblogs.com/qin-nz/p/aspnetcore-using-https-on-dnx451.html?utm_source=tuicool&utm_medium=referral

在反复搜索官方文档并反复尝试以后得出以下解决方案

project.json 中,添加引用 Microsoft.AspNetCore.Server.Kestrel.Https

 1 {
 2   "dependencies": {
 3     //跨平台引用
 4     //"Microsoft.NETCore.App": {
 5     //  "version": "1.0.0",
 6     //  "type": "platform"
 7     //},
 8     "Microsoft.AspNetCore.Diagnostics": "1.0.0",
 9     "Microsoft.AspNetCore.Mvc": "1.0.0",
10     "Microsoft.AspNetCore.Razor.Tools": {
11       "version": "1.0.0-preview2-final",
12       "type": "build"
13     },
14     "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
15     "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
16     "Microsoft.AspNetCore.Server.Kestrel.Https": "1.0.0",
17     "Microsoft.AspNetCore.StaticFiles": "1.0.0",
18     "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
19     "Microsoft.Extensions.Configuration.Json": "1.0.0",
20     "Microsoft.Extensions.Logging": "1.0.0",
21     "Microsoft.Extensions.Logging.Console": "1.0.0",
22     "Microsoft.Extensions.Logging.Debug": "1.0.0",
23     "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
24     "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
25   },
26
27   "tools": {
28     "BundlerMinifier.Core": "2.0.238",
29     "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
30     "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
31   },
32
33   "frameworks": {
34     //跨平台引用
35     //"netcoreapp1.0": {
36     //  "imports": [
37     //    "dotnet5.6",
38     //    "portable-net45+win8"
39     //  ]
40     //}
41     //Windows平台通用化引用
42     "net452": {}
43   },
44
45   "buildOptions": {
46     "emitEntryPoint": true,
47     "preserveCompilationContext": true
48   },
49
50   "runtimeOptions": {
51     "configProperties": {
52       "System.GC.Server": true
53     }
54   },
55
56   "publishOptions": {
57     "include": [
58       "wwwroot",
59       "Views",
60       "Areas/**/Views",
61       "appsettings.json",
62       "web.config"
63     ],
64     "exclude": [
65       "wwwroot/lib"
66     ]
67   },
68
69   "scripts": {
70     "prepublish": [ "bower install", "dotnet bundle" ],
71     "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
72   }
73 }

project.json

在Program.cs中,增加HTTPS访问端口绑定

 1 using System;
 2 using System.Collections.Generic;
 3 using System.IO;
 4 using System.Linq;
 5 using System.Threading.Tasks;
 6 using Microsoft.AspNetCore.Hosting;
 7
 8 namespace Demo
 9 {
10     public class Program
11     {
12         public static void Main(string[] args)
13         {
14
15             var host = new WebHostBuilder()
16                 .UseKestrel()
17                 .UseUrls("http://*", "https://*")
18                 .UseContentRoot(Directory.GetCurrentDirectory())
19                 .UseIISIntegration()
20                 .UseStartup<Startup>()
21                 .Build();
22
23             host.Run();
24         }
25     }
26 }

Program.cs

Startup.cs 文件中,启用HTTPS访问并配置证书路径及密码

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Threading.Tasks;
 5 using Microsoft.AspNetCore.Builder;
 6 using Microsoft.AspNetCore.Hosting;
 7 using Microsoft.Extensions.Configuration;
 8 using Microsoft.Extensions.DependencyInjection;
 9 using Microsoft.Extensions.Logging;
10 using System.IO;
11 using Microsoft.AspNetCore.Http;
12
13 namespace Demo
14 {
15     public class Startup
16     {
17         public Startup(IHostingEnvironment env)
18         {
19             var builder = new ConfigurationBuilder()
20                 .SetBasePath(env.ContentRootPath)
21                 .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
22                 .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
23                 .AddEnvironmentVariables();
24             Configuration = builder.Build();
25         }
26
27         public IConfigurationRoot Configuration { get; }
28
29         // This method gets called by the runtime. Use this method to add services to the container.
30         public void ConfigureServices(IServiceCollection services)
31         {
32
33             // Add framework services.
34             services.AddMvc();
35
36             services.Configure<Microsoft.AspNetCore.Server.Kestrel.KestrelServerOptions>(option => {
37                 option.UseHttps(Path.Combine(new DirectoryInfo(Directory.GetCurrentDirectory()).FullName, "cret.pfx"), "pw");
38             });
39
40
41
42         }
43
44         // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
45         public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
46         {
47             loggerFactory.AddConsole(Configuration.GetSection("Logging"));
48             loggerFactory.AddDebug();
49
50             if (env.IsDevelopment())
51             {
52                 app.UseDeveloperExceptionPage();
53                 app.UseBrowserLink();
54             }
55             else
56             {
57                 app.UseExceptionHandler("/Home/Error");
58             }
59
60
61             app.UseStaticFiles();
62
63             app.UseMvc(routes =>
64             {
65                 routes.MapRoute(
66                     name: "default",
67                     template: "{controller=App}/{action=Index}/{id?}");
68             });
69
70             //https://docs.asp.net/en/latest/security/cors.html?highlight=https
71             app.UseCors(builder =>builder.WithOrigins("https://*").AllowAnyHeader());
72
73             app.Run(run =>
74             {
75                 return run.Response.WriteAsync("Test");
76             });
77
78         }
79     }
80 }
时间: 2024-10-14 09:00:26

ASP.NET Core 1.0 部署 HTTPS (.NET Core 1.0)的相关文章

ASP.NET Core 1.0 部署 HTTPS

ASP.NET Core 1.0 部署 HTTPS ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1) 提示 更新时间:2016年01月23日. 在目前介绍 ASP.NET Core 1.0 的中英文文章中,我没有找到关于部署HTTPS的, 究其原因,除了暂时无法跨平台外,就算是很少人有这个需求,但我还是决定写一下. 警告 目前( 1.0.0-rc1-update1 )仅支持完整版的dnx451,dnxcore5需要rc2的支持.目前只能运行在Win

ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)

ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)? 警告 您当前查看的页面是未经授权的转载! 如果当前版本排版错误,请前往查看最新版本:http://www.cnblogs.com/qin-nz/p/aspnetcore-using-https-on-dnx451.html 提示 更新时间:2016年01月23日. 在目前介绍 ASP.NET Core 1.0 的中英文文章中,我没有找到关于部署HTTPS的, 究其原因,除了暂时无法跨平台外,就算是

NET Core Kestrel部署HTTPS

NET Core Kestrel部署HTTPS ASP.NET Core配置 Kestrel部署HTTPS.现在大部分网站已经部署HTTPS,大家对于安全越来越重视. 今天简单介绍一下ASP.NET Core 部署HTTPS,直接通过配置Kestrel.大家也可以通过前置Nginx来部署HTTPS. 下面直接进入正题. 新建项目并添加引用 新建一个ASP.NET Core Web Application  模板选择空. 新建好项目添加引用 Microsoft.AspNetCore.Server.

NET Core Kestrel部署HTTPS使用SSL证书

ASP.NET Core配置 Kestrel部署HTTPS.现在大部分网站已经部署HTTPS,大家对于安全越来越重视. 今天简单介绍一下ASP.NET Core 部署HTTPS,直接通过配置Kestrel.大家也可以通过前置Nginx来部署HTTPS. 下面直接进入正题. 新建项目并添加引用 新建一个ASP.NET Core Web Application  模板选择空. 新建好项目添加引用 Microsoft.AspNetCore.Server.Kestrel.Https. Install-P

ASP.NET Core开发Docker部署

ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细了解一下Docker的用途,以及真实的应用场景. Docker源于PaaS,PaaS的应用场景即是Docker的应用场景. Platform as a Service: 平台即服务, 是面向软件开发者的服务, 云计算平台提供硬件, OS, 编程语言, 开发库, 部署工具, 帮助软件开发者更快的开发软

ASP.NET Core开发-Docker部署运行

ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细了解一下Docker的用途,以及真实的应用场景. Docker源于PaaS,PaaS的应用场景即是Docker的应用场景. Platform as a Service: 平台即服务, 是面向软件开发者的服务, 云计算平台提供硬件, OS, 编程语言, 开发库, 部署工具, 帮助软件开发者更快的开发软

Solr 4.0 部署实例教程

Solr 4.0 部署实例教程 Solr 4.0的入门基础教程,先说一点部署之后肯定会有人用solrj,solr 4.0好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrServer,我是找了半天才发现,大家以后可以注意. 部署前准备: Solr 必须运行在Java1.5 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可. Solr 4.0 :  http://www.apache.org/dyn/closer.cgi/lu

[转帖]2016年时的新闻:ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0

http://www.cnblogs.com/webapi/p/5673104.html ASP.NET 5.0 将改名为 ASP.NET Core 1.0 ASP.NET MVC 6  将改名为 ASP.NET MVC Core 1.0 Entity Framework 7.0    将改名为 Entity Framework Core 1.0 .NET新的跨平台版本将命名为.NET Core 1.0 新版本的ASP.NET和Entity Framework有一个严重的问题,就是它们同以前的版

《ASP.NET Core 高性能系列》关于.NET Core的部署方式

概述,.NET Core应用程序可以创建三种类型的部署:FDD SCD FDE 框架依赖的部署(FDD).顾名思义,框架依赖的部署(FDD)依赖于目标系统上是否存在.NET Core版本.由于.NET Core已经存在,因此您的应用程序在不同的.NET Core版本中进行移植.您的应用程序仅包含其自己的代码以及.NET Core库之外的任何第三方依赖项.FDD包含.dll文件,可以通过使用dotnet命令行启动这些文件. 例如,dotnet app.dll运行名为的应用程序app. 自包含的部署