雖然使用 Visual Studio 創建 ASP.NET Core 程序的時候可以選擇是否添加 https 支持,不過這種方式只添加了 localhost
的證書,只有本地訪問時瀏覽器纔會承認。真正對外公開服務的時候這樣是絕對沒法兒提供 https 服務的。
本文介紹使用三種不同的方式添加 https 的支持,三種方法各有優劣,本文會進行比較並給出不同的適用場景。你自己選擇就好。
你需要有一個證書
如果你還沒有證書,可以考慮去 https://freessl.org/ 免費申請一個。可以爲泛域名申請 3 個月有效期的證書(Let’s Encrypt),或者爲單域名申請 6 個月有效期的證書(buypass)。
如果不知道如何操作,可以參考我的另一篇博客:
你可以在以上博客中得到四種不同格式的證書(Nginx/Apache/IIS/Tomcat),下面的方法中每一種方法會使用到其中的一種證書。
方法
實際上,只要是一個 Web 服務器就可以爲 ASP.NET Core 服務程序提供 https 的支持,不過本文只會介紹下面這三種方法:
- Kestrel
- 這是 ASP.NET Core 自帶提供的 Web 服務器
- Frp
- 這是一個開源即將收費的反向代理服務
- Nginx
- 這是非常強大的 Web 服務器,同時也是強大的反向代理服務器
Kestrel 最簡單,幾句代碼即可配完。Frp 相對來說也很簡單。而 Nginx 非常強大,幾乎適用於各種 Web 服務場景。
Nginx 支持 http2,Kestrel 的 Windows 和 Linux 版本支持 http2。
發現寫成一篇博客會模糊這些方法之間的步驟,所以我將它們分別寫成了幾篇博客:
- 使用 Kestrel 爲你的 ASP.NET Core 服務添加 https 支持
- 使用 Frp 爲你的 Web 服務添加 https 支持
- 使用 Nginx 爲你的 Web 服務添加 https 支持
我的博客會首發於 https://blog.walterlv.com/,而 CSDN 會從其中精選發佈,但是一旦發佈了就很少更新。
如果在博客看到有任何不懂的內容,歡迎交流。我搭建了 dotnet 職業技術學院 歡迎大家加入。
本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名呂毅(包含鏈接:https://walterlv.blog.csdn.net/),不得用於商業目的,基於本文修改後的作品務必以相同的許可發佈。如有任何疑問,請與我聯繫。