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首选用win-acme,这个工具也实现上面说的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。比如 做点微信小程序开发 美滋滋
Asp.net Core Kestrel 免费实现https的更多相关文章
- ASP.NET Core Kestrel 中使用 HTTPS (SSL)
在ASP.NET Core中,如果在Kestrel中想使用HTTPS对站点进行加密传输,可以按照如下方式 申请证书 这一步就不详细说了,有免费的和收费的,申请完成之后会给你一个*.pfx结尾的文件. ...
- ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- 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日. 在目前介 ...
- AServer - 基于Asp.net core Kestrel的超迷你http服务器
AServer是基于ASP.NET Core Kestrel封装的一个超迷你http服务器.它可以集成进你的Core程序里,用来快速的响应Http请求,而不需要集成整个ASP.NET Core MVC ...
- ASP.NET Core Kestrel部署HTTPS
ASP.NET Core配置 Kestrel部署HTTPS.现在大部分网站已经部署HTTPS,大家对于安全越来越重视. 今天简单介绍一下ASP.NET Core 部署HTTPS,直接通过配置Kestr ...
- ASP.NET Core Kestrel 随机404错误
一.Bug 出现 最近遇到一个很诡异的bug,Visual Studio 2017调试ASP.NET Core 2.2 Web程序的时候,随机性的出现404错误.如下图 事实上这个css文件是存在的, ...
- .NET 6学习笔记(7)——ASP.NET Core通过配置文件启用HTTPS
本质上我还是一个Windows App Developer,所以虽然会做一些ASP.NET Core的工作,但通常这些ASP.NET Core的程序会托管在Windows Service上,并且大部分 ...
- 部署asp.net core Kestrel 支持https 使用openssl自签ssl证书
通过openssl生成证书 openssl req -newkey rsa:2048 -nodes -keyout my.key -x509 -days 365 -out my.cer openssl ...
- 如何在docker配置asp.net core https协议
本文参考自<Step by step: Expose ASP.NET Core over HTTPS with Docker> 自从微软发布.net core以来,就在许多社区掀起了讨论, ...
- ASP.NET Core的Kestrel服务器(转载)
Kestrel是一个基于libuv的跨平台ASP.NET Core web服务器,libuv是一个跨平台的异步I/O库.ASP.NET Core模板项目使用Kestrel作为默认的web服务器.Kes ...
随机推荐
- 遗传算法+强化学习—TPG—Emergent Tangled Graph Representations for Atari Game Playing Agents_2
最近在看进化算法在强化学习(RL)领域的一些应用,有些论文中将使用进化算法解决强化学习问题的算法归为非强化学习算法,然而又有些论文把使用进化算法解决强化学习问题的算法归为强化学习算法,不过更多的论文是 ...
- 华为三折屏Mate XT
相关: https://www.youtube.com/watch?v=vMx3kVnp11Q
- 5.5 Vim移动光标命令汇总
Vim 文本编辑器中,最简单的移动光标的方式是使用方向键,但这种方式的效率太低,更高效的方式使用快捷键. Vim 移动光标常用的快捷键及其功能如下面各表所示,需要注意的是,表中所有的快捷键都在命令模式 ...
- PasteEx:一款.NET开源的Windows快捷粘贴神器
前言 PasteEx是一款.NET开源的用于增强 Windows 粘贴功能的小工具,它解决了将剪贴板内容保存为文件的繁琐步骤.无需打开记事本等应用,它可直接将文字.图片等内容粘贴到桌面上,极大提升了效 ...
- 理解Hive 不同组件的功能
Hive功能 通过将SQL转换成MR.Spark等任务,来计算HDFS中数据的工具. Hive是基于Hadoop之上的数仓工具.通过HDFS存储真实的数据,通过YARN运行计算任务(MR.Spark等 ...
- 从零开始学java(第一天)
上班日学习时间很短,而且很多事情会耽搁,就会写的比较少 近几期的笔记以复习为主,后面会逐渐拓展对我个人来说的新知识 1. 复习了一下typore的语法,方便以后记笔记用 # MarkDown学习(# ...
- arthas 通过stack 命令查看堆栈调用
https://arthas.gitee.io/stack.html 很多时候我们都知道一个方法被执行,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 sta ...
- 【JS篇】控制子集超过一定数量开始轮播
[JS篇]控制子集超过一定数量开始轮播, 这个是很早的时候的一个效果了,经过代码的不断迭代升级修改,现在是最封装的一版本,通过面向对象传参数,适用于任何一个需要放置 数量达到一定条件后可执行的函数 / ...
- sde解除锁定
在sde数据被锁定的情况下,编辑.创建featureclass或者注册版本的时候会报告:Lock request conflicts with an established lock. 方法一:多半情 ...
- 记一次cenos7安装nginx
安装依赖 yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel 下 ...