2018年6月8日 星期五

Asp.Net Core 2.1 實作 https超簡單

參考資料
ASP.NET Core 2.1 roadmap
Enforce HTTPS in ASP.NET Core (2.1)

之前開發 1.0時,因為我的程式會直接包成 docker image並佈署在 CentOS上,要設定網頁強制走 https好像不是那麼容易,想不到在 2.1的版本上,微軟很給力的讓整個設定變方便了,真的要給個讚

在 2.1基本產生的專案,在 development mode就會預設給你一個 ceterficate用,不用擔心憑證從那裡來

Class Startup的 method Configure會看到 兩行指令
//強制使用 https
app.UseHsts();

//自動轉至 https
app.UseHttpsRedirection();

在自動轉 https時預設 port是 5001,可以在 Class Startup method ConfigureServices加上下列程式碼,可以把 options.HttpsPort換會你想要的 port number

services.AddHttpsRedirection(options =>
    {
        options.RedirectStatusCode = StatusCodes.Status301MovedPermanently;
        options.HttpsPort = 5001;
    }); 

在 production model有要求要強制設定 certificate的資訊在 appsettings.json (In production, HTTPS must be explicitly configured)

在 tag Kestrel 有兩個子項目 EndPoints,Certificates
 EndPoints是設定 https入口,可以設定多個,每個 endpoint可以設定自己的 certificate
 Certificates可以設定預設的 certificate,如果網站只用到一個的話, endpoint就不用再設定 certificate

Certificate 有兩種,一種為 Path–Password,憑證檔 (.pfx) + 宓碼,另一種為 Subject–Store 方式, 我使用時是用 Path–Password的方式,很多方式可以產生出憑證檔,可以參考  How do I convert a Java Keystore into a PFX or P12

dokcer的部份可以參考 How to setup a developer certificate for Docker


沒有留言:

張貼留言