新文章 网摘 文章 随笔 日记

.Net 5 Web应用程序配置Https(使用SSL证书)

大多数的教程都是ASP.NET Core1.1的教程,使用了UseHttps的方法,关于.Net 5的教程很少,所以下面介绍以下如何在.Net 5 Web项目中使用SSL证书。

首先需要准备一个SSL证书(可以去买,也可以去生成一个用于测试),然后找到证书的.pfx文件和密码(阿里云购买的证书.pfx文件在IIS目录下,密码在txt文件中写着)。

操作
打开Program.cs文件,修改CreateHostBuilder方法为

public static IHostBuilder CreateHostBuilder(string[] args)=>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>()
.UseUrls("testhostname")//填入域名或主机名或ip
.UseKestrel(option =>
{
option.ConfigureHttpsDefaults(o =>
{
o.ServerCertificate =
new System.Security.Cryptography.X509Certificates.X509Certificate2(@"C:\xxx.pfx","pwd");//证书路径、密码
});
});
});

配置完这些就可以打包发布直接在服务器dotnet上运行了(别忘了把pfx文件拷贝过去)

参考说明
在.Net 5中,用来配置Kestrel的方法是IWebHostBuilder.UseKestrel,该方法是扩展方法,同时将Kestrel设置为web的指定服务器
参考官方文档:WebHostBuilderKestrelExtensions.UseKestrel 方法
这时候如果使用IIS进行调试运行就会抛出以下异常

System.InvalidOperationException:“Application is running inside IIS process but is not configured to use IIS server.”

使用上述方法配置用于传入Kestrel选项的回调即Action<KestrelServerOptions>(KestrelServerOptions类)
使用ConfigureHttpsDefaults方法来设置每个新建的https终结点指定要运行的配置操作。(KestrelServerOptions.ConfigureHttpsDefaults)
传入处理Https连接的设置(HttpsConnectionAdapterOptions类)
调用ServerCertificate来指定服务器证书(HttpsConnectionAdapterOptions.ServerCertificate属性),该值为X509Certificate2类型(X509Certificate2类),这个类型表示的是一个X.509证书,通过构造函数传入文件名和密码,然后赋值给ServerCertificate属性即可完成证书配置。
————————————————
版权声明:本文为CSDN博主「Don't move」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_48520962/article/details/116721703

posted @ 2022-04-23 21:26  岭南春  阅读(605)  评论(0)    收藏  举报