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

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

找到那個xxx.exe 直接啟動就可以了,內部那個庫會自動去申請證書并設定到Kestrel上,申請時會驗證域名,我估計就是簡單訪問下這個域名看能不能正常訪問,所以一定要保證你配置的域名都能正常訪問,如果一切正常就可以通過https訪問了,估計到期前會自動續簽證書,得3個月后才能驗證,
6、最后
做個備忘,回頭看這種方式真TM簡單,參考庫、配置、發布,檔案夾復制到哪都能運行,還自帶https,比如 做點微信小程式開發 美滋滋
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/49208.html
標籤:.NET Core
上一篇:給 EF Core 查詢增加 With NoLock
下一篇:1.NET Core 概述
