.net Core 中Kestrel 實現https功能


目錄

  • 0、概述
  • 1、創建項目
  • 2、添加包引用
  • 3、啟動配置
  • 4、發佈
  • 5、運行
  • 6、最後

回到頂部

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 有多種發佈模式

.net Core 中Kestrel 實現https功能

這種方式需要給IIS或Nginx..配置證書,其中IIS首選用win-acme,這個工具也實現上面說的ACME協議,使用它可以很容易在IIS中安裝Let's Encrypt證書,並實現自動續簽

.net Core 中Kestrel 實現https功能

我現在用的這種方式,服務器上啥都不裝,直接一個發佈好的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中配置

<code>1 using Microsoft.Extensions.DependencyInjection; 

2
3 public class Startup
4 {
5 public void ConfigureServices(IServiceCollection services)
6 {
7 services.AddLetsEncrypt();
8 }
9 }/<code>

下面是配置文件

<code> 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": "[email protected]"
13 },
14 "urls":"http://*;https://*"
15 }/<code>

回到頂部

4、發佈

.net Core 中Kestrel 實現https功能

根據你的方式選,我這裡選擇獨立模式,發佈後的程序裡就自動包含了.net core運行時,所以包比較大,但是不需要服務器安裝.net core,發佈好的包放哪都能直接運行。目標運行時看著選,也可以發佈層跨平臺的通用包,詳細的看官網吧。

回到頂部

5、運行

.net Core 中Kestrel 實現https功能

找到那個xxx.exe 直接啟動就可以了,內部那個庫會自動去申請證書並設置到Kestrel上,申請時會驗證域名,我估計就是簡單訪問下這個域名看能不能正常訪問,所以一定要保證你配置的域名都能正常訪問。如果一切正常就可以通過https訪問了。估計到期前會自動續簽證書,得3個月後才能驗證。

回到頂部

6、最後

做個備忘,回頭看這種方式真TM簡單,引用庫、配置、發佈。文件夾複製到哪都能運行,還自帶https。比如 做點微信小程序開發 美滋滋


分享到:


相關文章: