Asp.net Core Kestrel 免费实现https
0、概述
先了解下https是个啥: https://www.bilibili.com/video/bv1j7411h7vv
so!只要给我们的web服务器配置一个证书就行了,证书可以买,也可以用免费的let's encrypt,此证书提供商是多个牛x大公司为了推进全球https化搞出来的,所以不用担心免费的会有啥问题。唯一的问题是90天有效期,所以你得提前免费续签,当然有办法容易的实现自动续签。
为了实现自动化的证书申请、发放、续签、删除.....各种证书相关的功能,所以let's encrypt提出了个acme协议,不同编程语言都可以实现这个协议来完成这些工作。本文要讲的内容就是这种方式。某只大牛在github上开源了一个库,这个库实现了前面说的这个什么协议,实现了自动申请证书,自动续签、自动与asp.net core内置kestrel集成。仅仅需要几行配置。
asp.net core 有多种
这种方式需要给iis或nginx..配置证书,其中iis首选用,这个工具也实现上面说的acme协议,使用它可以很容易在iis中安装let's encrypt证书,并实现自动续签
我现在用的这种方式,服务器上啥都不装,直接一个发布好的asp.net core程序(一个文件夹)丢到服务器上,启动里面的.exe就可以运行。主要是因为简单,方便移动。
在这种方式下,如果能在应用程序内部实现acme协议自动申请证书然后配置给kestrel,并实现自动续签,就完美了。然后github上搜出俩比较成熟的:acmesharpcore letsencrypt ,我使用的后面这种方式。我只是用的windowserver发布的,应该支持跨平台的,因为它只是一个库
1、创建项目
首先创建一个asp.net core 3.1的程序(mvc razorpages都行)
2、添加包引用
然后添加nuget包 paket add mcmaster.aspnetcore.letsencrypt --version 0.3.0
3、启动配置
然后在startup中配置
1 using microsoft.extensions.dependencyinjection; 2 3 public class startup 4 { 5 public void configureservices(iservicecollection services) 6 { 7 services.addletsencrypt(); 8 } 9 }
下面是配置文件
1 // appsettings.json 2 { 3 "letsencrypt": { 4 // set this to automatically accept let's encrypt's terms of service. 5 // if you don't set this in config, you will need to press "y" whenever the application starts 6 "accepttermsofservice": true, 7 8 // 申请证书要绑定的域名,阔以多个,不能写端口哦 9 "domainnames": [ "example.com", "www.example.com" ], 10 11 // you must specify an email address to register with letsencrypt.org 12 "emailaddress": "it-admin@example.com" 13 }, 14 "urls":"http://*;https://*" 15 }
4、发布
根据你的方式选,我这里选择独立模式,发布后的程序里就自动包含了.net core运行时,所以包比较大,但是不需要服务器安装.net core,发布好的包放哪都能直接运行。
目标运行时看着选,也可以发布层跨平台的通用包,详细的看官网吧。
5、运行
找到那个xxx.exe 直接启动就可以了,内部那个库会自动去申请证书并设置到kestrel上,申请时会验证域名,我估计就是简单访问下这个域名看能不能正常访问,所以一定要保证你配置的域名都能正常访问。如果一切正常就可以通过https访问了。估计到期前会自动续签证书,得3个月后才能验证。
6、最后
做个备忘,回头看这种方式真tm简单,引用库、配置、发布。文件夹复制到哪都能运行,还自带https。比如 做点微信小程序开发 美滋滋
上一篇: 手机ps怎么设计清爽的夏日活动海报模板?
下一篇: java8接口默认方法静态方法和重复注解
推荐阅读
-
asp.net core IdentityServer4 实现 resource owner password credentials(密码凭证)
-
详解ASP.NET Core实现强类型Configuration读取配置数据
-
asp.net core IdentityServer4 实现 Client credentials(客户端凭证)
-
Asp.Net Core中基于Session的身份验证的实现
-
在ASP.NET Core 中发送邮件的实现方法(必看篇)
-
ASP.NET Core MVC 中实现中英文切换的示例代码
-
浅谈如何在ASP.NET Core中实现一个基础的身份认证
-
谈谈如何在ASP.NET Core中实现CORS跨域
-
在ASP.NET Core中实现一个Token base的身份认证实例
-
在Asp.Net Core中配置使用MarkDown富文本编辑器实现图片上传和截图上传(开源代码.net core3.0)