ASP.NET Core Kestrel免费实现https

概述

 

先了解下 https 是什么

 

  • HTTPS是如何工作的?3 分钟介绍HTTPS:https://www.bilibili.com/video/BV1j7411H7vV

  • HTTPS原理及流程:https://www.jianshu.com/p/14cd2c9d2cd2

so!只要给我们的 web 服务器配置一个证书就行了,证书可以买,也可以用免费的 Let’s Encrypt,此证书提供商是多个牛 X 大公司为了推进全球 https 化搞出来的,所以不用担心免费的会有啥问题。唯一的问题是 90 天有效期,所以你得提前免费续签,当然有办法容易的实现自动续签。

 

为了实现自动化的证书申请、发放、续签、删除…..各种证书相关的功能,所以 Let’s Encrypt 提出了个 ACME 协议,不同编程语言都可以实现这个协议来完成这些工作。

本文要讲的内容就是这种方式。某只大牛在 github 上开源了一个库,这个库实现了前面说的这个什么协议,实现了自动申请证书,自动续签、自动与ASP.NET Core内置 Kestrel 集成。仅仅需要几行配置。

ASP.NET Core有多种发布模式:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/?view=aspnetcore-3.1

ASP.NET Core Kestrel 免费实现 https

这种方式需要给 IIS 或 Nginx..配置证书,其中 IIS 首选用 win-acme:https://github.com/win-acme/win-acme,这个工具也实现上面说的 ACME 协议,使用它可以很容易在 IIS 中安装 Let’s Encrypt 证书,并实现自动续签

ASP.NET Core Kestrel 免费实现 https 

我现在用的这种方式,服务器上啥都不装,直接一个发布好的ASP.NET Core程序(一个文件夹)丢到服务器上,启动里面的.exe 就可以运行。主要是因为简单,方便移动。

在这种方式下,如果能在应用程序内部实现 ACME 协议自动申请证书然后配置给 Kestrel,并实现自动续签,就完美了。

 

然后 github 上搜出俩比较成熟的:

 

  • ACMESharpCore:https://github.com/search?l=C%23&q=Let%27s+Encrypt&type=Repositories

     

  • LetsEncrypt:https://github.com/natemcmaster/LetsEncrypt 

 

我使用的后面这种方式。我只是用的 windowserver 发布的,应该支持跨平台的,因为它只是一个库。

一、创建项目

 

首先创建一个ASP.NET Core 3.1 的程序(mvc razorPages 都行)

二、添加包引用

 

然后添加 nuget 包

paket add McMaster.AspNetCore.LetsEncrypt --version 0.3.0

 

三、启动配置

 

然后在 Startup 中配置

using Microsoft.Extensions.DependencyInjection;
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddLetsEncrypt();
    }
}

 

下面是配置文件

// appsettings.json
{
    "LetsEncrypt": {
        // Set this to automatically accept Let's Encrypt's terms of service.
        // If you don't set this in config, you will need to press "y" whenever the application starts
        "AcceptTermsOfService": true,
        // 申请证书要绑定的域名,阔以多个,不能写端口哦
        "DomainNames": [ "example.com", "www.example.com" ],
        // You must specify an email address to register with letsencrypt.org
        "EmailAddress": "it-admin@example.com"
    },
    "urls":"http://*;https://*"
}

 

四、发布

ASP.NET Core Kestrel 免费实现 https

根据你的方式选,我这里选择独立模式,发布后的程序里就自动包含了.NET Core 运行时,所以包比较大,但是不需要服务器安装.NET  Core,发布好的包放哪都能直接运行。

 

目标运行时看着选,也可以发布层跨平台的通用包,详细的看官网吧。

五、运行

ASP.NET Core Kestrel 免费实现 https

找到那个 xxx.exe 直接启动就可以了,内部那个库会自动去申请证书并设置到 Kestrel 上,申请时会验证域名,我估计就是简单访问下这个域名看能不能正常访问,所以一定要保证你配置的域名都能正常访问。如果一切正常就可以通过 https 访问了。估计到期前会自动续签证书,得 3 个月后才能验证。

六、最后

 

做个备忘,回头看这种方式真简单,引用库、配置、发布。

 

文件夹复制到哪都能运行,还自带 https。比如 做点微信小程序开发 美滋滋

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...