ASP.NET Core 1.0 部署 HTTPS(.NET Core 1.0)
最近要做一个项目,正逢ASP.NetCore1.0版本的正式发布。由于现代互联网的安全要求,HTTPS加密通讯已成主流,所以就有了这个方案。
本方案启发于一个旧版的解决方案:
ASP.NETCore1.0部署HTTPS(.NETFramework4.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":["bowerinstall","dotnetbundle"],
"postpublish":["dotnetpublish-iis--publish-folder%publish:OutputPath%--framework%publish:FullTargetFramework%"]
}
}
在Program.cs中,增加HTTPS访问端口绑定
usingSystem;
usingSystem.Collections.Generic;
usingSystem.IO;
usingSystem.Linq;
usingSystem.Threading.Tasks;
usingMicrosoft.AspNetCore.Hosting;
namespaceDemo
{
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
varhost=newWebHostBuilder()
.UseKestrel()
.UseUrls("http://*","https://*")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
}
在Startup.cs文件中,启用HTTPS访问并配置证书路径及密码
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Threading.Tasks;
usingMicrosoft.AspNetCore.Builder;
usingMicrosoft.AspNetCore.Hosting;
usingMicrosoft.Extensions.Configuration;
usingMicrosoft.Extensions.DependencyInjection;
usingMicrosoft.Extensions.Logging;
usingSystem.IO;
usingMicrosoft.AspNetCore.Http;
namespaceDemo
{
publicclassStartup
{
publicStartup(IHostingEnvironmentenv)
{
varbuilder=newConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json",optional:true,reloadOnChange:true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json",optional:true)
.AddEnvironmentVariables();
Configuration=builder.Build();
}
publicIConfigurationRootConfiguration{get;}
//Thismethodgetscalledbytheruntime.Usethismethodtoaddservicestothecontainer.
publicvoidConfigureServices(IServiceCollectionservices)
{
//Addframeworkservices.
services.AddMvc();
services.Configure<Microsoft.AspNetCore.Server.Kestrel.KestrelServerOptions>(option=>{
option.UseHttps(Path.Combine(newDirectoryInfo(Directory.GetCurrentDirectory()).FullName,"cret.pfx"),"pw");
});
}
//Thismethodgetscalledbytheruntime.UsethismethodtoconfiguretheHTTPrequestpipeline.
publicvoidConfigure(IApplicationBuilderapp,IHostingEnvironmentenv,ILoggerFactoryloggerFactory)
{
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=>
{
returnrun.Response.WriteAsync("Test");
});
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。