您的位置:首页 > 理论基础 > 计算机网络

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

2016-07-11 00:00 1146 查看
最近要做一个项目,正逢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

{
"dependencies": {
//跨平台引用
//"Microsoft.NETCore.App": {
// "version": "1.0.0",
// "type": "platform"
//},
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel.Https": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
},

"tools": {
"BundlerMinifier.Core": "2.0.238",
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},

"frameworks": {
//跨平台引用
//"netcoreapp1.0": {
// "imports": [
// "dotnet5.6",
// "portable-net45+win8"
// ]
//}
//Windows平台通用化引用
"net452": {}
},

"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},

"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},

"publishOptions": {
"include": [
"wwwroot",
"Views",
"Areas/**/Views",
"appsettings.json",
"web.config"
],
"exclude": [
"wwwroot/lib"
]
},

"scripts": {
"prepublish": [ "bower install", "dotnet bundle" ],
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}


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

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;

namespace Demo
{
public class Program
{
public static void Main(string[] args)
{

var host = new WebHostBuilder()
.UseKestrel()
.UseUrls("http://*", "https://*")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();

host.Run();
}
}
}


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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using System.IO;
using Microsoft.AspNetCore.Http;

namespace Demo
{
public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}

public IConfigurationRoot Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{

// Add framework services.
services.AddMvc();

services.Configure<Microsoft.AspNetCore.Server.Kestrel.KestrelServerOptions>(option => {
option.UseHttps(Path.Combine(new DirectoryInfo(Directory.GetCurrentDirectory()).FullName, "cret.pfx"), "pw");
});

}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();

if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}

app.UseStaticFiles();

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=App}/{action=Index}/{id?}");
});

//https://docs.asp.net/en/latest/security/cors.html?highlight=https
app.UseCors(builder =>builder.WithOrigins("https://*").AllowAnyHeader());

app.Run(run =>
{
return run.Response.WriteAsync("Test");
});

}
}
}


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

云服务器下搭建ASP.NET Core环境
Linux(Ubuntu)下搭建ASP.NET Core环境
Ubuntu16.04系统配置.net core环境
Visual Studio 2015和 .NET Core安装教程
ubuntu16.4下用jexus部署ASP.NET Core环境
.NET Core Windows环境安装配置教程
asp.net core实现文件上传功能
ASP.NET Core配置教程之读取配置信息
ASP.NET 5已终结,迎来ASP.NET Core 1.0和.NET Core 1.0
简单谈谈.NET Core跨平台开发
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ASP.NET Core1.0 HTTPS