參考資料
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
沒有留言:
張貼留言