取消

三种方法为 ASP.NET Core 对外服务添加 https 支持(kestrel / frp / nginx)

虽然使用 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。


发现写成一篇博客会模糊这些方法之间的步骤,所以我将它们分别写成了几篇博客:

本文会经常更新,请阅读原文: https://blog.walterlv.com/post/add-https-support-for-asp-dotnet.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected])

登录 GitHub 账号进行评论