0、概述 先瞭解下https是個啥: https://www.bilibili.com/video/BV1j7411H7vV so!只要給我們的web伺服器配置一個證書就行了,證書可以買,也可以用免費的Let's Encrypt,此證書提供商是多個牛X大公司為了推進全球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": "[email protected]" 13 }, 14 "urls":"http://*;https://*" 15 }
4、發佈
根據你的方式選,我這裡選擇獨立模式,發佈後的程式里就自動包含了.net core運行時,所以包比較大,但是不需要伺服器安裝.net core,發佈好的包放哪都能直接運行。
目標運行時看著選,也可以發佈層跨平臺的通用包,詳細的看官網吧。
5、運行
找到那個xxx.exe 直接啟動就可以了,內部那個庫會自動去申請證書並設置到Kestrel上,申請時會驗證功能變數名稱,我估計就是簡單訪問下這個功能變數名稱看能不能正常訪問,所以一定要保證你配置的功能變數名稱都能正常訪問。如果一切正常就可以通過https訪問了。估計到期前會自動續簽證書,得3個月後才能驗證。
6、最後
做個備忘,回頭看這種方式真TM簡單,引用庫、配置、發佈。文件夾複製到哪都能運行,還自帶https。比如 做點微信小程式開發 美滋滋