三种方法为 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)。
如果不知道如何操作,可以参考我的另一篇博客:
- 使用 freessl.org 为你的域名申请免费的 SSL 证书
你可以在以上博客中得到四种不同格式的证书(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。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com) 。